我正在尝试对输入数组中的值求和,但它总是返回NAN
var sum = 0 //i have also tried parse(0,10);
$(qty_name).each(function(){
var aValue = $(this).val(); //i have tried parseInt($(this).val(), 10)
sum += aValue; //i have tried sum = parseInt(sum) + parseInt(aValue)
});
alert(sum);
我一直在拿NaN。我来自php背景所以我从来没有处理类型转换。请问我缺少什么?
答案 0 :(得分:2)
这是因为你的其他qty_name没有完美的整数值。对于这样的值,这导致NAN。您需要将值解析为int(或float)以进行任何数学计算:
var sum = 0;
$(qty_name).each(function(){
sum += parseInt($(this).val()) || 0;
});
alert(sum);
答案 1 :(得分:0)
这样做:
var sum = 0;
$(qty_name).each(function(){
sum += +($(this).value()); //+ converts to a number
});
alert(sum);
您在var aValue += $(this).val()
错误地定义了不应使用+=
运算符的变量。你应该这样做:
var sum = 0 //i have also tried parse(0,10);
$(qty_name).each(function(){
var aValue = $(this).val(); //removed + sign before = sign
sum += aValue; //i have tried sum = parseInt(sum) + parseInt(aValue)
});
alert(sum);
答案 2 :(得分:0)
您需要使用parseInt
或parseFloat
,但此处您正在使用var aValue += $(this).val();
并且未初始化aValue。直接向sum
var sum = 0;
$(qty_name).each(function(){
sum += parseInt($(this).val(), 10)||0;
});
alert(sum);
答案 3 :(得分:0)
尝试使用isNaN
和parseInt
,如下所示:
var sum = 0;
$(qty_name).each(function(){
sum += (isNaN($(this).val()) ? 0 : parseInt($(this).val(),10));
});
alert(sum)
答案 4 :(得分:0)
据我所知,你试图避免添加NaN,使用jQuery内置方法.isNumeric()
就好了(当然+=
undefined
上的var sum = 0;
$(qty_name).each(function(){
var aValue = parseInt($(this).val(), 10);
if(!$.isNumeric(aValue)) return;
sum += aValue;
});
alert(sum);
#39; t结束):
{{1}}