jQuery - parseInt()总是返回NaN

时间:2014-09-22 10:06:57

标签: jquery nan parseint

我创建了一个在表中添加行的小函数。这很好用。但现在我对parseInt()部分有疑问。

表的第一行包含ID,它将我带到if子句。太好了,太好了。 但在第二次运行时,它会向1发出警报,但会将其用作字符串并使用NaN进行回复。

那么,我的问题在哪里?

function AddFlas(){
    if($(".Flasvalues").is(":hidden")){
        $(".Flasvalues").slideToggle(300);
    }

    var par = $("#Flastable tr:last");
    var tdt = par.children("td:nth-child(1)").text(); 
    tdt = parseInt(tdt,10);
    alert(tdt); // First run: ID, Second: 1, Third: 1
    if (tdt != "NaN"){
        alert("is NaN");
        tdt = 0;
    }
    tdt++;
    alert(tdt);
    $("#Flastable tbody").append(
        "<tr>"+
        "<td>"+tdt+"</td>"+
        "<td><input name='Flas' type='text'></td>"+
        "<td><input name='Flaskgm' type='number' min='0' step='any'></td>"+
        "<td align='center'><img src='styles/save.png' class='btnSaveFlas'><img src='styles/trash.png' class='btnDeleteFlas'></td>"+
        "</tr>");

    addPointer();
    $(".btnSaveFlas").bind("click", SaveFlas);      
    $(".btnDeleteFlas").bind("click", DeleteFlas);              
}

2 个答案:

答案 0 :(得分:3)

只需使用isNaN(),如下所示:

而不是

if (tdt != "NaN"){

尝试

if (isNaN(tdt)){

或尝试

tdt = parseInt(tdt,10) || 0;  //if 'paresInt()' fails to parse value in int it will return 0

如果您使用第二个答案,则不需要

if (tdt != "NaN"){
    alert("is NaN");
    tdt = 0;
}

您的代码中的代码块(虽然这是错误的)。

答案 1 :(得分:1)

你可以使用以下语法来获取它...它总是使用undefined和Nan但是在浮动时会失败。

+ tdt || 0