2013-09-30 43 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)。