我有一个函数,它将一个表单中的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);
}
答案 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