2013-08-31 170 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; 
} 

你必须重新读取每件他们正在改变时间ab值。

注1另外,请记住parseInt(val, radix)中的radix参数。你的情况是10(正如我所想的那样)。关于为什么这很重要,请参阅this MDN article

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

2

ab在页面加载计算一次,当形式仍然是空的,很明显的结果将是NaN

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

+0

现在我明白了,还有很多东西需要学习。谢谢 :) – MrPaulius