2013-08-31 2 views
0

потратил 45 минут на попытку фигуры, почему он возвращает NaN, пожалуйста, укажите мне в правильном направлении. Мой код:parseInt возвращает NaN

<form name="calc"> 
    <input type="text" value="0" name="first" onchange="add()"> 
    <input type="text" value="0" name="second" onchange="add()"> 
    <input type="text" name="result" onchange="add()"> 
</form> 

<script type="text/javascript"> 
    var a = parseInt(document.calc.first.value); 
    var b = parseInt(document.calc.second.value); 
    var c = a + b; 
    function add(){ 
     document.calc.result.value = parseInt(c); 
    } 
</script> 

ответ

3

Вы ищете:

function add() { 
    var a = parseInt(document.calc.first.value, 10); 
    var b = parseInt(document.calc.second.value, 10); 

    var c = a + b; 

    document.calc.result.value = c; 
} 

Вы должны перечитать a и b значения каждый раз, когда они изменяются.

Примечание 1: Кроме того, помните о параметре radix в parseInt(val, radix). Это 10 в вашем случае (как я полагаю). См. this MDN article о том, почему это важно.

Примечание 2: нет необходимости вызывать parseInt(c), потому что c уже типа number.

2

a и b рассчитываются раз на странице загрузки, когда форма еще пуста, очевидно, результат будет NaN.

Поместите всю логику в функцию add, чтобы получить текущее состояние формы.

+0

теперь я вижу, есть намного больше, чтобы учиться. Спасибо :) – MrPaulius

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