Javascript - 循环遍历一个对象数组,只显示最后一个对象

时间:2016-03-21 19:54:17

标签: javascript arrays object for-loop

我花了一些时间试图制作一个解释已发行的标题,但我担心它有点不足以解决我遇到的问题。

简而言之,我使用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

的链接

2 个答案:

答案 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">';