3 回答

TA貢獻1811條經(jīng)驗 獲得超6個贊
問題是您要附加到名為output. output最初的值為undefined,這就是為什么您會在結(jié)果字符串中看到它(在追加之后)。要規(guī)避此問題,您可以更改此行:
let output;
對此:
let output = '';
或者,您可以執(zhí)行類似于下面的操作,其中我使用了mapandjoin而不是附加到自變量。我用setTimeout包裹在 a 中Promise來模擬fetch調(diào)用
const ulEl = document.querySelector('.vendorDropdown');
const simulateFetch = () => {
ulEl.innerHTML = 'Fetching JSON. Please wait..';
//Mock data
const json = {
"vendor_name": ["User 1", "User 2", "User 3"]
};
//Promise resolves some JSON data
return new Promise((resolve, reject) => {
setTimeout(() => resolve(json), 1500);
});
};
document.querySelector('button').addEventListener('click', () => {
simulateFetch().then(json => {
//Create the HTML and append it to the ul
const liEls = json['vendor_name'].map(vendor => `<li>${vendor}</li>`);
ulEl.innerHTML = liEls.join(' ')
})
.catch(err => console.error(err));
});
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" data- toggle="dropdown">Dropdown Example
<span class="caret"></span></button>
<ul class="dropdown-menu vendorDropdown">
</ul>
</div>

TA貢獻1827條經(jīng)驗 獲得超9個贊
您初始化的方式output
是創(chuàng)建一個空元素。相反,最好用空字符串之類的東西初始化它,然后添加您的值。
let output = "";
會做。
添加回答
舉報