得到数字的总和导致NaN

时间:2014-04-23 16:50:34

标签: javascript jquery

我有一个函数,它将一个表单中的6个字段相加并将其放入总计部分。但是,在填写所有6个字段之前,总计显示NaN,因为字段为空直到结束。

我将如何根据任何给定时间的总数显示此总数。

function CalculateGrandTotal(){

var total1 = parseInt($('#classTotal1').val()),
    total2 = parseInt($('#classTotal2').val()),
    total3 = parseInt($('#classTotal3').val()),
    total4 = parseInt($('#classTotal4').val()),
    total5 = parseInt($('#classTotal5').val()),
    total6 = parseInt($('#classTotal6').val()),
    final = total1 + total2 + total3 + total4 + total5 + total6;

    $('#grandTotal').val(final);    
}

4 个答案:

答案 0 :(得分:5)

您可以尝试将不可解析的值默认为零,如此

var total1 = parseInt($('#classTotal1').val()) || 0,
    total2 = parseInt($('#classTotal2').val()) || 0,
    total3 = parseInt($('#classTotal3').val()) || 0,
    total4 = parseInt($('#classTotal4').val()) || 0,
    total5 = parseInt($('#classTotal5').val()) || 0,
    total6 = parseInt($('#classTotal6').val()) || 0;
var final = total1 + total2 + total3 + total4 + total5 + total6;

答案 1 :(得分:1)

这是因为parseInt('')会返回Nan。请尝试这样:

var total1 = parseInt($('#classTotal1').val()) || 0;

<强> Working Demo

答案 2 :(得分:0)

如果其中任何一个值为undefined,您将获得NaN值,从而弄乱您的计算。一个人会破坏党。

这样做可能会更好:

var total = 0
var i

for (i = 1; i <= 6; ++i) {
  var val = $('#classTotal' + i).val();

  if (val) {
    total += parseInt(val)
  }
}

使用循环而不是复制粘贴大量代码行。

答案 3 :(得分:0)

var total1 = parseInt($('#classTotal1').val().replace(/^\s+|\s+$/g, '')) || 0;

剥去空白区域,如果它是空的,则给它0