parseInt возвращает NaN
Потратил 45 минут, пытаясь понять, почему он возвращает 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>
2 ответа
Решение
Ты ищешь:
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
в вашем случае (как я полагаю). Посмотрите эту статью MDN о том, почему это важно.
Примечание 2: не нужно звонить parseInt(c)
, так как c
уже типа number
,
a
а также b
рассчитываются один раз при загрузке страницы, когда форма еще пуста, очевидно, результат будет NaN
,
Поместите всю логику в add
функция, поэтому вы получите текущее состояние формы.