【问题标题】:Keep getting NaN after adding numbers - jQuery添加数字后继续获取 NaN - jQuery
【发布时间】:2011-10-14 10:26:34
【问题描述】:

我有这个脚本:

var foo=0;

$('#container .field').each(function(){
     var item = $(this);
     foo += parseInt(item.val());
})

console.log(foo);

但是每次,当我记录 tot 变量时,它都会显示 NaN。 .field 类被赋予输入字段。

谁能帮帮我?

【问题讨论】:

  • 我首先要说 item.val() 不是数字。在说之前,不要使用 parseInt() 使用 Number(item.val());如果这不起作用,则您的值不是数字

标签: jquery nan


【解决方案1】:

如果您的某个字段中的某个值无法解析为整数,则可能会发生这种情况。

请参阅here 以获得解决方案:

// Note: add 10 as the radix parameter to indicate you want
// base-10 integers.
foo += parseInt(item.val(), 10) || 0;

这将有效地跳过无法解析的值。

【讨论】:

    【解决方案2】:

    我遇到了这个问题,但我也不能很容易地预先将 foo 设置为 0,因为它是动态创建的,我通过使用 Dan 的解决方案解决了这个问题,但也将 or 放在了 foo 上:

    foo = (foo || 0) + (parseInt(item.val()) || 0)
    

    【讨论】:

      【解决方案3】:

      在 Javascript 控制台中:

      • NaN || 0 --> 0

      • 未定义 || 0 --> 0

      因此,如果您想添加一个数字,您可以执行以下操作:

      var foo=2;
      foo+=NaN || 0 + 2;
      

      或者在你的情况下:

      foo += parseInt(item.val()) || 0 ;
      

      【讨论】:

        猜你喜欢
        • 2015-09-03
        • 2018-08-20
        • 1970-01-01
        • 2020-04-05
        • 2017-07-21
        • 2011-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多