For循环遍历数组仅显示最后一个值

Posted

技术标签:

【中文标题】For循环遍历数组仅显示最后一个值【英文标题】:For loop through Array only shows last value 【发布时间】:2014-08-03 23:36:55 【问题描述】:

我正在尝试遍历一个数组,然后使用 innerhtml 创建一个新的

元素用于数组中的每个条目。不知何故,我的代码只显示了数组中的最后一个值。我已经坚持了几个小时,似乎无法弄清楚我做错了什么。
window.onload = function() 

// Read value from storage, or empty array
var names = JSON.parse(localStorage.getItem('locname') || "[]");
var i = 0;

    n = (names.length);
    for (i = 0; i <= (n-1); i++) 
        var list = names[i];
        var myList = document.getElementById("list");
        myList.innerHTML = "<li class='list-group-item' id='listItem'>"+ list + "</li>" + "<br />";
    

我的 HTML 中有一个 ID 为“list”的 UL。

【问题讨论】:

【参考方案1】:

更改您的 for 循环:

for (i = 0; i <= (n-1); i++) 
    var list = names[i];
    var myList = document.getElementById("list");
    myList.innerHTML += "<li class='list-group-item' id='listItem'>"+ list + "</li>" + "<br />";

使用+= 代替=。除此之外,您的代码看起来还不错。

【讨论】:

请注意 +=.innerHTML is not optimal 上。首选myList.insertAdjacentHTML('beforeend', htmlToAppend)【参考方案2】:

我建议你先通过create element来做一个div。在那里你添加你的innerHTML,然后你可以做appendchild。这将非常适合这种类型的场景。

function displayCountries(countries) 
const countriesDiv = document.getElementById('countriesDiv');
countries.forEach(country => 
    console.log(country.borders);
    const div = document.createElement('div');
    div.classList.add('countryStyle');
    div.innerHTML = `
    <h1> Name : $country.name.official </h1>
    <h2> Capital : $country.capital </h2>
    <h3> Borders : $country.borders </h3>
    <img src="$country.flags.png">
    `;
    countriesDiv.appendChild(div);
);

【讨论】:

以上是关于For循环遍历数组仅显示最后一个值的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript循环遍历

循环遍历数组对象以检查值匹配仅适用于第一次迭代,后续迭代失败

PHP数组循环?

for循环使用range遍历数组尝试修改元素值的问题

Python for 循环仅将最后一个列表作为值附加

如何循环遍历二维数组以在页面上显示数据?