返回NAN的jquery中的数字求和

时间:2014-09-11 12:11:46

标签: javascript jquery

我正在尝试对输入数组中的值求和,但它总是返回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背景所以我从来没有处理类型转换。请问我缺少什么?

5 个答案:

答案 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)

您需要使用parseIntparseFloat,但此处您正在使用var aValue += $(this).val();并且未初始化aValue。直接向sum

添加值
var sum = 0;
$(qty_name).each(function(){
    sum += parseInt($(this).val(), 10)||0;
});
alert(sum);

答案 3 :(得分:0)

尝试使用isNaNparseInt,如下所示:

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}}