5

您好,我有未知数量的数组名称和类的输入

<input type="hidden" name="hidden[1]" class="sum" value="31">
<input type="hidden" name="hidden[2]" class="sum" value="21">
<input type="hidden" name="hidden[3]" class="sum" value="321">
<input type="hidden" name="hidden[4]" class="sum" value="-31">
<input type="hidden" name="hidden[5]" class="sum" value="31.12">
<input type="hidden" name="hidden[6]" class="sum" value="0">

问题是我尝试使用 .each() 和 getElementByClassName 如何对这些字段的所有值求和,但这不起作用

4

5 回答 5

8

遍历匹配的元素并将它们的值相加:

var total = 0;
$( ".sum" ).each( function(){
  total += parseFloat( $( this ).val() ) || 0;
});

$.each()用来遍历与.sum类匹配的所有项目,然后value使用.val(). 一旦我们有了这个值,我们需要确保它是数字的,所以我使用了parseFloat(). 如果parseFloat()返回一个假值,0将被使用。

参考:

于 2013-10-07T09:18:52.630 回答
7

我尝试使用每个,它对我有用。检查您是否使用了parseFloat ...
如果您将“sum”作为一个类来定义所有必须计算的元素,那么下面的代码应该可以工作...

$(document).ready(function () {
    var total = 0;
    $('.sum').each(function (index, element) {
        total = total + parseFloat($(element).val());
    });
    alert(total);
});
于 2013-10-07T09:25:42.463 回答
3
var totalSum = 0;
$('.sum').each(function () {
    totalSum += parseFloat(this.value);
});

演示

于 2013-10-07T09:19:19.523 回答
2

你可以这样做

var total = 0;
$('.sum').each(function() {
total += parseFloat($(this).val());
});
于 2013-10-07T09:20:21.097 回答
0

使用每个jQuery 函数来迭代input.sum元素就足够了。

var sum = 0;
$('input.sum').each(function() {
   var value = +this.value || 0;
   sum += value;
});

工作演示

于 2013-10-07T09:19:01.630 回答