2014-04-23 81 views
0

我有一個函數將一個表單中總共6個字段加起來並放在總計部分中。然而,直到全部6個字段都填滿之後,總計顯示NaN,因爲字段是空的直到結束。得到的數字的總和導致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);  
} 

回答

1

這是因爲parseInt('')回報Nan。嘗試這樣的:

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

Working Demo

5

您可以嘗試默認unparseble值爲零,這樣

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; 
0

如果這些值中的任何一個值爲undefined,您將得到一個值爲NaN的值,這會使您的計算出錯。一個人會破壞派對。

這可能是更好地做到這一點:

var total = 0 
var i 

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

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

使用循環,而不是複製粘貼噸的代碼行。

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

帶出空的空間,並且如果它是空的,給它0