2013-06-05 49 views
1

我試圖得到一組數值的總合計值。 Im將數字作爲元素標籤中的文本存儲在一個數組中,然後將它們全部加在一起。我的問題是,它沒有將數字作爲成對插入到數組中。它將它們作爲單個整數添加,這是什麼錯誤。 檢查的jsfiddle太見例如JavaScript存儲數組值

http://jsfiddle.net/Wd78j/

var z = $('.impressions').text(); 
var x = []; 
for(var i = 0; i < z.length; i++){ 
    x.push(parseInt(z[i])); 
} 
console.log(x); 

var total = 0; 
$.each(x,function() { 
    total += this; 
}); 
$('#impressTotals').append("[Total:" +total + "]"); 
$('#array').append("[Array:"+x+"]"); 

回答

1

text()回報的所有展示內容,其中你的每個字符相加的級聯文本。

您想遍歷每個展示元素,並保持運行的總和。像這樣的東西應該工作

var sum = 0; 
$('.impressions').each(function(){ 
    sum = sum + (+$(this).text()); 
}); 

Updated Fiddle


,或保持原來的結構(不要忘記基數參數parseInt函數):

var z = $('.impressions'); 
var x = []; 
z.each(function(){ 
    x.push(parseInt($(this).text(), 10)); 
}); 
console.log(x); 

var total = 0; 
$.each(x,function() { 
    total += this; 
}); 
$('#impressTotals').append("[Total:" +total + "]"); 
$('#array').append("[Array:"+x+"]"); 

Updated fiddle

+1

它實際上回報根據'console.log(z)',整個集合的文本作爲一個字符串。 – Mathletics

+0

@Mathletics - 事實上 - 當我看着他的小提琴時,我看到了這一點。愚蠢的我假設'.text'只會返回第一個元素的文本,就像所有其他的jQuery函數一樣...... :) –

+1

我從來沒有見過一元+以前用過這種方式。油滑。 –

4

當你獲得文本時,它將採取所有數字並連接他們成一個字符串。下面是每個元素一個一個地推送它。

var x = []; 

$('.impressions').each(function() { 
    var z = $(this).text(); 
    x.push(parseInt(z, 10)); 
}) 

當然,你可以建立的總結是each功能裏面,但我做到了,這樣更密切地反映你的代碼。

+1

+1 - 希望你不介意,我調整了你的parseInt電話,雖然:) –

+0

謝謝,好電話! – n00dle

0

您遍歷字符串,你可以只使用$.map構建陣列相反,如果你需要它,否則只是重複和總結值:

var x  = $.map($('.impressions'), function(el,i) {return parseInt($(el).text(), 10);}), 
    total = 0, 
    n  = x.length; 

while(n--) total += x[n] || 0; 

$('#impressTotals').append("[Total:" +total + "]"); 
$('#array').append("[Array:"+x+"]"); 

FIDDLE