问答详情
源自:2-11 编程练习

为什么这段代码的结果都是NaN?

var n1 = 0;

            var n2 = 0;

            n1 = parseInt(num1.value);

            n2 = parseInt(num2.value);

            btns[0].onclick = function(){

                ret.innerHTML = n1 + n2 ;

            }

            btns[1].onclick = function(){

                ret.innerHTML = n1 - n2 ;

            }

            btns[2].onclick = function(){

                ret.innerHTML = n1 * n2 ;

            }

            btns[3].onclick = function(){

                ret.innerHTML = n1 / n2 ;

            }


提问者:Jaris 2017-08-22 22:55

个回答

  • jia_小海龟
    2017-08-25 12:11:44

    应该是这样的原因:首先你要知道window.onload函数是页面加载之后执行。所以 “var n1 = 0;var n2 = 0; n1 = parseInt(num1.value);n2 = parseInt(num2.value);”这段代码执行之后由于页面是刚加载,还没有输入值。所以n1和n2是NaN。而后点击函数执行的时候,n1和n2都没更新,所以一直是NaN,所以要是你刷新下页面,更新n1和n2的值,结果就会正确。看懂吗?

  • jia_小海龟
    2017-08-25 12:01:22

    我发现个很奇怪的现象,你打开网页刷新之后,点击结果就会变成正确的,你试试。

  • jia_小海龟
    2017-08-23 17:06:52

    因为n1和n2不是整型值,变成parseInt(n1)就可以了