2014-07-15 34 views
1

我使用$ .each迭代對象的集合,並將每個對象的預定義屬性添加到頁面中。這工作得很好。用累加器遍歷jquery對象?

$(myObjects).each(function(i) { 
    var element = $("<tr>").appendTo(tableBody); 
    $("<td>").append(this.unitCount).appendTo(element); 
}); 

我追加的值是一個數字。我想在累加器中跟蹤這些值,並將總數返回到別處。就像這樣:

var total = 0; 
$(myObjects).each(function(i) { 
    var element = $("<tr>").appendTo(tableBody); 
    $("<td>").append(this.unitCount).appendTo(element); 
    var total = total + this.unitCount; 
}); 

的問題是,因爲$(myObjects)爲對象的集合累加器的總變量沒有在循環內的認可。 (當我在循環啓動後立即調用console.log(total)時,識別內部的值)。我想用一個循環將值附加到頁面上並跟蹤總數。這可能嗎?

+1

哪裏是問題嗎?只需在'$(statusData).each'之前使'var totalBidUnits'全局(在'$(statusData).each'之前寫入'var totalBidUnits = 0;')並在之後使用它 – Regent

+0

對不起,我不清楚... –

+0

我打了一點輸入太早。我一直在使用累加器,但用$ .each遍歷對象阻止我使用該功能。這反映在編輯中。 – BarFooBar

回答

0

在每個或for循環中創建元素非常緩慢,而是構造了一個HTML字符串表示。追加一次你與你的數據循環中完成:

jsBin demo

var TR = ""; 
var total = 0; 

$.each(myObjects, function() { 
    var uc = this.unitCount; 
    TR += "<tr><td>"+ uc +"</td></tr>"; 
    total += uc; 
}); 

tableBody.append(TR).append("<tr><td>TOTAL: "+ total +"</td></td>");