来自具有相同类的不同div的值的总和

我正在加载具有.totalprice类的动态div。 最后,我想总结所有.totalprice中的值。

对于

元素:

 var sum = 0; $('.totalprice').each(function(){ sum += parseFloat($(this).text()); // Or this.innerHTML, this.innerText }); 

你可以在这里看到一个有效的例子

对于元素(输入,复选框等):

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

或者,如果要查找整数,可以使用parseInt()函数。

你可以在这里看到一个有效的例子 。

除非您完全确定内容的价值,否则您将无法使用开箱即用的parseFloat

你需要确保处理:

  • 过多的空白
  • 领先的$
  • 空白
  • 意外的字符串

看一看:

 
$1.25
0.25
$3.00
2.50
$0.01

以下将处理所有情况:

 var sum = 0; $(".totalprice").each(function() { var val = $.trim( $(this).text() ); if ( val ) { val = parseFloat( val.replace( /^\$/, "" ) ); sum += !isNaN( val ) ? val : 0; } }); console.log( sum ); 

另见: http : //jsfiddle.net/rwaldron/hfA5V/

基于Rionmonster所做的事情,这对我有用:

HTML:

 
6.7
8.9
4.5

JavaScript的:

 var sum = 0; $('.totalprice').each(function() { sum += parseFloat($(this).text()); }); alert(sum); 

输出:

 21.1 

我发现在从

中获取值时,必须使用.text()选择器。 这是看到它工作的小提琴: http : //jsfiddle.net/davecoulter/7D7nR/

 (function( $ ){ $.fn.sum=function () { var sum=0; $(this).each(function(index, element){ if($(element).val()!="") sum += parseFloat($(element).val()); }); return sum; }; })( jQuery ); alert($('.abcd').sum()); 
    

如果你在整个代码中经常这样做,建议将它放在一个很好的可重用函数中

 function removeComma(x) { if (x) { if (x.length > 0) { return x.replace(/,/g,''); } } } function sum_class(list,source) { // source can be text for non input DOM elements or value for text inputs var total = 0; $(list).each(function() { if (source == 'text') { total += parseFloat(removeComma($(this).text())); } else { total += parseFloat(removeComma($(this).val())); } }); return total; } 

请记住,这两个函数都使用我已经命名的变量来对我有意义,你可以将它们重命名为你理解的更适合你的东西,比如函数sum_class的名称,不是指OOP类而是指函数的目的是从属于同一个类的元素返回值的总和。