Продолжайте получать NaN после добавления чисел - jQuery - PullRequest
1 голос
/ 27 июля 2011

У меня есть этот скрипт:

var foo=0;

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

console.log(foo);

Но каждый раз, когда я записываю переменную tot, он показывает NaN.Класс .field присваивается полям ввода.

Кто-нибудь может мне помочь?

Ответы [ 3 ]

6 голосов
/ 27 июля 2011

Это может произойти, если у вас есть значение в одном из ваших полей, которое не может быть проанализировано как целое число.

См. здесь для решения:

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

Это будет эффективно пропускать значения, которые не могут быть проанализированы.

0 голосов
/ 04 ноября 2015

В консоли Javascript:

  • NaN ||0 -> 0

  • не определено ||0 -> 0

Таким образом, если вы хотите добавить число, вы можете сделать что-то вроде:

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

или в вашем случае:

foo += parseInt(item.val()) || 0 ;
0 голосов
/ 22 октября 2015

У меня была эта проблема, но я также не мог заранее легко установить foo в 0, так как он создавался динамически, я обошел его с помощью решения Дэна, но также поставил или на foo:

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