花了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>发布于 2013-08-31 19:42:16
你要找的是:
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:同时,请记住parseInt(val, radix)中的radix参数。在您的情况下(如我所想)是10。关于为什么这很重要,请参见这篇MDN文章。
Note 2:不需要调用parseInt(c),因为c已经是number类型了。
发布于 2013-08-31 19:42:07
a和b在页面加载时计算一次,当表单仍然为空时,结果显然是NaN。
将所有逻辑放入add函数中,以便检索表单的当前状态。
https://stackoverflow.com/questions/18552078
复制相似问题