2014-04-23 3 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 .Try как это:

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

Смежные вопросы