2013-09-30 144 views
1

我試圖通過我的數組元素循環,找到它們的總和,並更新與值的div。jquery循環問題

由於某些原因,我的each()循環不能按預期工作。例如,當我輸入12,3次時,答案應該是36,但我得到72.

任何建議,謝謝!

查看完整的代碼在這裏:http://jsfiddle.net/lakesmaa/DGPST/3/

$.each(array, function() { 
     sum += parseInt(this); 


    }); 
    $('.total').html(sum); 

    }; 

回答

2

在按鈕的每一次點擊,您要添加的項目數組:

array.push(newItem); 

然後迭代陣列上,並增加每個項目和。

因此,在第1點擊:

array = [12], sum = 12 

2日點擊:

array = [12, 12], sum = (12 + 12 + 12) = 36 

3日點擊:

array = [12, 12, 12], sum = 36 + 12 + 12 + 12 = 72 

要麼你重置sum自己的函數中到0

$('#button').click(function() { 
    var sum = 0; // reset 

jsFiddle Demo

或者,直接添加的項目,不反覆在陣列上:

array.push(newItem); 
sum += parseInt(newItem); 

// Remove the for each loop iterating over the array to accumulate sum 

jsFiddle Demo

+0

的感謝!重置變量的工作! – eazyduzit100

0

那是因爲你是你的$.each()內使用this,期望&試圖解析jQuery包裹的元素。

this在您的實例實際上是String {0: "1", 1: "2"}(CONSOLE.LOG它,你會看到)

而是使用.each()回調函數的項目(第二參數)。

$.each(array, function(index, item) { 
    sum += parseInt(item);  
}); 

這將實習給你,36當12被輸入3次,如預期。

jsFiddle Demo

1

你永遠不會重置sum您單擊處理程序裏面,所以在每一次點擊你從你離開的地方開始。

您需要:

// ... 
$('#button').click(function() { 
    var sum = 0; 
    // ... 
}); 

http://jsfiddle.net/DGPST/9/

0

你要總結陣列值之前的總和重置每次爲零。目前,您只有一個全局變量,您可以在單擊按鈕時添加所有值。

var sum = 0; 
$.each(array, function() { 
    sum += parseInt(this); 
}); 
$('.total').html(sum); 

demo with tidyed-up code)。