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小提琴