获取表格单元格中浮点值的总和

get sum of float values in table cells

本文关键字:表格 单元格 获取      更新时间:2023-09-26

我有一张人们欠下的罚款表:

<tr><td class='fines'>104.20</td></tr>
<tr><td class='fines'>26.40</td></tr>
<tr><td class='fines'>99.14</td></tr>

我正试图得到细胞的总和:

var sumFines = "";
$.each($('.fines'),function(){
    alert($(this).html());
    sumFines += parseFloat($(this).html());
})
alert(sumFines);

每个循环中每个警报的结果都是单元格中的数字。最终警报的结果是"NaN",为什么?

当您对求和时

"" + 120

结果返回一个字符串,您必须对数字求和,因此更改

var sumFines = "";

var sumFines = 0;

我需要将sumFines的初始值设置为0。

var sumFines = 0;
$.each($('.fines'),function(){
    alert($(this).html());
    sumFines += parseFloat($(this).html());
})
alert(sumFines);

var sumFines = "";使sumFines成为一个字符串,这就是你得到NaN的原因,因为你对一个不能同时转换的字符串和float进行算术运算。

如果您想保留.each方法,只需将初始值更改为0即可。

var subtotal = 0;
$('.fines').each(function() {
    subtotal += !isNaN(+$(this).html()) && +$(this).html();
});
alert(subtotal);

线路:

!isNaN(+$(this).html()) && +$(this).html();

断言您实际上是在添加一个数字,否则什么都没有。

小提琴http://jsfiddle.net/hem7q4fn/2/

Nan将整个表达式简化为Nan尝试:

var sumFines = 0;
$('.fines').each(function () {
    var num = parseFloat($(this).txt());
    sumFines += isNaN(num) ? 0 : num;
});
alert(sumFines);