我花了一些时间试图制作一个解释已发行的标题,但我担心它有点不足以解决我遇到的问题。
简而言之,我使用for循环迭代这个对象数组。
var people = [
{
name: "John Doe",
age: 33,
gender: "male",
loc: "Springfield"
},
{
name: "Jane Doe",
age: 32,
gender: "female",
loc: "Springfield"
}
];
for循环运行一个函数,传递两个参数,一个元素id和数组,就像这样。
var list = {
html: function (el, array) {
var container = document.getElementById(el), html;
for( var i=0;i<array.length;i++ ) {
html = '<div class="item">';
html += '<h1>'+array[i].name+'</h1>';
html += '<p>Age: '+array[i].age+'</p>';
html += '<p>Sex: '+array[i].gender+'</p>';
html += '<p>Location: '+array[i].loc+'</p>';
html += '</div>';
console.log( array[i].name+', '+array[i].age+', '+array[i].gender+', '+array[i].loc );
}
container.innerHTML = html;
}
}
list.html('list', people);
问题:循环只返回数组中的最后一个对象。我不确定为什么会这样或者如何解决它。任何援助将不胜感激。谢谢。
以下是指向:relevant demo
的链接答案 0 :(得分:9)
使用空字符串初始化html
var并在+
循环的开头添加for
:
var container = document.getElementById(el), html = "";
for( var i=0;i<array.length;i++ ) {
html += '<div class="item">'; // add plus here
答案 1 :(得分:2)
foor循环中的第一条指令是赋值
html = '<div class="item">'
所以每次迭代都是&#34; html&#34;的全部内容。被取代。 你应该使用
html += '<div class="item">';