如何应对NaN?

时间:2014-05-05 19:42:44

标签: javascript jquery

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时。有人可以帮忙吗?

3 个答案:

答案 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作为后备值(如果数字为0NaN):

tot += +$(this).html() || 0;

这样,如果一个值不是数字,您将能够将其他值相加。