parseInt返回NaN

时间:2013-08-31 19:39:17

标签: javascript parseint

花了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 个答案:

答案 0 :(得分: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;
}

每次更改时,您都必须重新阅读ab个值。

注意1 :另外,请记住radix中的parseInt(val, radix)参数。在你的情况下是10(正如我想的那样)。请参阅this MDN article,了解其重要性。

注意2 :无需致电parseInt(c),因为c已经属于number类型。

答案 1 :(得分:2)

ab在页面加载时计算一次,当表单仍为空时,显然结果为NaN

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