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 функция, поэтому вы получите текущее состояние формы.

Другие вопросы по тегам