2014-09-22 88 views
1

我创建了一个小函数,它在表中添加一行。这工作正常。但是现在我遇到了parseInt()部分的问题。jQuery - parseInt()总是返回NaN

该表的第一行包含一个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);    
} 

回答

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; 
} 

代码块(这是错误的,虽然)在你的代码。

+0

现在,我觉得我有点愚蠢。两者都很好。谢谢。 = D – 2014-09-22 10:21:25

+0

@MarcoWinkler ...哈哈..你的欢迎..每天我们学习新的东西,所以不要感到愚蠢这是一个很好的问题......谢谢.. – 2014-09-22 10:23:11

2

你可以用下面的语法来得到它..它总是工作在undefined和Nan上,但是在float时会失败。

+ tdt || 0