0

花了 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>
4

2 回答 2

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你的情况(我想)。请参阅这篇 MDN 文章,了解为什么这很重要。

注2:不需要调用parseInt(c),因为c已经是类型了number

于 2013-08-31T19:42:16.290 回答
2

a并且在页面加载时b计算一次,当表单仍然为空时,显然结果将是NaN.

将所有逻辑放在add函数中,以便检索表单的当前状态。

于 2013-08-31T19:42:07.317 回答