2014-09-22 90 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