来自具有相同类的不同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类而是指函数的目的是从属于同一个类的元素返回值的总和。