Javascript возвращает NaN
Я пытаюсь отобразить промежуточный итог каждый раз, когда клиент вводит количество. Однако, когда я перебираю свои входы, я получаю NaN
как итог. Я считаю, что это может быть так, как я объявляю subtotal
переменная в моем скрипте, но я не сталкивался с этим раньше:
$('.item-qty input').bind('keyup', function(){
var subtotal = 0.0;
$('.item-qty input').each(function(){
var class = $(this).attr('id');
var qty = $(this).val();
var price = $('.'+class).html();
price = parseFloat(price);
qty = parseInt(qty);
subtotal = subtotal + (price * qty);
});
$('.subtotal input').val(subtotal);
});
1 ответов
parseFloat
и parseInt
может возвратить NaN
если первый символ строки не может быть преобразована в число.
Итак, я бы защитил от этого вот так (NaN
- это ложь значение):
price = parseFloat(price) || 0;
qty = parseInt(qty, 10) || 0;
арифметические операции над числами со значением NaN
почти всегда NaN
(NaN + 5
в результате NaN
.) Это значит, если только один вход не может быть проанализирован parseFloat
или parseInt
ваш текущий код будет в конечном итоге расчета NaN
для промежуточных итогов.
это уже упоминалось в комментариях (by Феликс в основном), но я думаю, что это стоит внимания, поскольку это важные проблемы:
- всегда передают до