我正在使用jQuery,我想总结我的表列中的值,一切似乎工作正常,但我的值返回一个字符串,其中添加了所有值,如:123.5013.0012.35
我如何正确地总结这些?
var totals
$(".add").each(function(i) {
totals += parseFloat($(this).text()).toFixed(2);
});
console.log(totals);
答案 0 :(得分:16)
你有多个错误。一个是没有将总数初始化为数字,如0.0。第二个没有意识到.toFixed()返回一个字符串。 Javascript将字符串连接在一起,而不是添加数字。
基本上同样的问题之前已被问过javascript-why-does-this-produce-and-ugly-string-i-would-like-currency,答案应该为你解决。
答案 1 :(得分:5)
这是一个工作版本(在Firefox 3.5中测试):
<!DOCTYPE html>
<html>
<head>
<title>Sum of nubers</title>
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
var total = 0;
$(".add").each(function(){
total += parseFloat($(this).text());
});
alert(total.toFixed(2));
});
</script>
</head>
<body>
<div class="add">23.4567</div>
<div class="add">98.7654</div>
</body>
</html>
这只是众多方法中的一种。对于其他几种方法,请看一下这个问题:
答案 2 :(得分:3)
var totals
$(".add").each(function(i) {
totals += parseFloat($(this).text());
});
console.log(totals.toFixed(2));
可能使用Math.round,floor或ceil
答案 3 :(得分:3)
简单试试这个。它适用于我。
var totals= 0;
$(".add").each(function() {
if (jQuery(this).val() != '')
totals= Number(totals) + Number(jQuery(this).val());
});
console.log(totals);
答案 4 :(得分:2)
看起来它正在做一个字符串添加。尝试设置var totals = 0;
答案 5 :(得分:2)
function update_total() {
var total = 0.0;
$('.invoice_service_price').each(function(index){
var val=parseFloat($(this).html().trim());
if(!isNaN(val)) total += val;
});
alert("total="+total);
};