jQuery计算所有文本字段中的值的总和

我有一个约30个包含数值的文本字段的订单。 我想计算所有模糊值的总和。

我知道如何select所有的文本字段,但不知道如何循环,并加起来所有的值?

$(document).ready(function(){ $(".price").blur(function() { //loop and add up every value from $(".price").val() }) }); 
 $('.price').blur(function () { var sum = 0; $('.price').each(function() { sum += Number($(this).val()); }); // here, you have your sum });​​​​​​​​​ 

一个更加通用的复制/粘贴function为您的项目。

 sumjq = function(selector) { var sum = 0; $(selector).each(function() { sum += Number($(this).text()); }); return sum; } console.log(sumjq('.price')); 

类似地,这些答案写成插件:

 $.fn.sum = function () { var sum = 0; this.each(function () { sum += 1*($(this).val()); }); return sum; }; 

对于logging1 * x在Chrome中比数字(x)快

如果你不需要支持IE8,那么你可以使用原生的Javascript Array.prototype.reduce()方法。 您将需要首先将您的JQuery对象转换为数组:

  var sum = $('.price').toArray().reduce(function(sum,element) { return sum + Number(element.value); }, 0); 

参考: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

使用这个function:

 $(".price").each(function(){ total_price += parseInt($(this).val()); }); 

这应该解决它:

 var total = 0; $(".price").each( function(){ total += $(this).val() * 1; }); 
 $(".price").each(function(){ total_price += parseFloat($(this).val()); }); 

请尝试像这样…

 $('.price').blur(function () { var sum = 0; $('.price').each(function() { if($(this).val()!="") { sum += parseFloat($(this).val()); } }); alert(sum); });​​​​​​​​​ 

JS小提琴