【问题标题】:jQuery - parseInt() always returns NaNjQuery - parseInt() 总是返回 NaN
【发布时间】:2014-11-16 06:23:06
【问题描述】:

我创建了一个在表格中添加一行的小函数。这工作正常。但现在我的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);              
}

【问题讨论】:

    标签: jquery nan parseint


    【解决方案1】:

    只需使用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;
    }
    

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

    【讨论】:

    • 现在,我觉得我有点傻。两者都工作正常。谢谢你。 =D
    • @MarcoWinkler...哈哈..欢迎您..我们每天都学到新东西,所以请不要觉得愚蠢,这是个好问题...谢谢..
    【解决方案2】:

    您可以使用以下语法来获取它.. 它始终与 undefined 和 Nan 一起工作,但在浮动时会失败。

    + tdt || 0
    

    【讨论】:

      猜你喜欢
      • 2012-04-28
      • 2016-05-20
      • 1970-01-01
      • 2013-07-11
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      相关资源
      最近更新 更多