function sumOfColumns(tableID, columnIndex) {
var tot = 0;
$("#" + tableID + " tr").children("td:nth-child(" + columnIndex + ")").each(function () {
tot += parseFloat($(this).html());
});
return tot;
}
var _totalhours = sumOfColumns("tblEmpEarnings", 3);
当我调试_totalhours
给我NaN
时。有人可以帮忙吗?
答案 0 :(得分:7)
NaN
表示“非数字”并且是keyword in JavaScript,而不仅仅是jQuery。这很可能是因为您尝试在字母而不是数字上使用parseFloat
。
你是如何处理的?
等式运算符(==和===)不能用于测试值 NaN的。请改用Number.isNaN()或isNaN()。
答案 1 :(得分:1)
您应该在尝试解析之前测试该值,以确保它是一个数字。您可以使用isNaN()javascript函数,NaN表示非数字。
var tot = 0,
value = $(this).html();
if(!isNan(value))
{
tot += parseFloat(value);
}
由于parse float返回NaN,并且在javaScript中NaN的计算结果为false,因此您还可以执行以下操作:
var tot = 0,
value = parseFloat($(this).html());
if(value)
{
tot += value;
}
答案 2 :(得分:-1)
您可以使用0
作为后备值(如果数字为0
或NaN
):
tot += +$(this).html() || 0;
这样,如果一个值不是数字,您将能够将其他值相加。