2012-02-01 40 views
0

我有一个数组:通过数组for循环单击事件只会给我最后一项?

var bar = []; 

我有一个for循环遍历数组会:

  for (var i = 0; i <= 3; i++) { 
       $(".left-lg").find(".name").html(bar[i].name); 
      } 

我想用数组中的内容替换DIV.name的内容,它的工作原理,但只给了我阵列中的最后一个。我读了一个JavaScript的循环将会在最后的点击事件,所以这就是为什么。

任何方式如何纠正这个问题,所以它会通过整个循环,而不是只给最后一个?

+0

目前尚不清楚你的要求。如果你的数组是'['foo','bar','baz']',那么你认为你的div的内容是什么? – bfavaretto 2012-02-01 19:38:17

回答

1

这是因为您始终将的HTML内容全部设置为.name匹配的元素。尝试使用提供给each()代替index说法:

$(".left-lg .name").each(function(index) { 
    $(this).html(bar[index].name); 
}); 
+0

似乎如果我尝试与其他元素在DOM中它不起作用:$(p.total).each(function(index){$(this.html(bar [index] .countTotal;});因为我有数组中的其他项目我需要放在?为什么它只能在第一个工作? – Xtian 2012-02-01 20:36:44

+0

该代码中有语法错误(它应该是$(this).html(bar [index] .countTotal) ;')。也许这就是问题所在?或者你的数组中只有一个项目? – 2012-02-01 20:45:39

0

使用,因为每次你打电话追加而不是HTML $(".left-lg").find(".name").append(bar[i].name);

0

那不妨试试:

$(".left-lg").find(".name").html(bar[i].name); 

要覆盖以前的循环。

设置一个变量等于你在一个阵列所需的值,然后传递数组元素:

var allNames; 

for (var i = 0; i <= 3; i++) { 
    allNames = allNames + bar[i].name); 
} 

$(".left-lg").find(".name").html(allNames); 
相关问题