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循环遍历数组仅显示最后一个值的主要内容,如果未能解决你的问题,请参考以下文章