2012-02-01 34 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); 
相關問題