鍍金池/ 問答/數(shù)據(jù)庫  HTML/ 這個js小程序為什么會出現(xiàn)NaN?

這個js小程序為什么會出現(xiàn)NaN?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script>

        window.onload = function() {

            var oTxt1 = document.getElementById("txt1");

            var oTxt2 = document.getElementById("txt2");

            var oBtn = document.getElementById("btn1");



            var n1 = parseFloat(oTxt1.value);

            var n2 = parseFloat(oTxt2.value);

            oBtn.onclick = function() {

                alert(n1+n2);

            };

        };

    </script>

</head>

<body>

<input type="text" id="txt1" >

<input type="text" id="txt2" >

<input type="button" id="btn1" value="=">

</body>

</html>

小弟最近在自學(xué)js,今天遇到個問題有點搞不懂,希望哪位大神幫忙看看

  var n1 = parseFloat(oTxt1.value);

  var n2 = parseFloat(oTxt2.value);

上面兩個變量如果定義在 oBtn.onclick = function()之外會彈出NaN,如果在里面就不會,拜謝!

圖片描述

回答
編輯回答
茍活

執(zhí)行時機的問題,你在使用

oBtn.onclick = function() {
                alert(n1+n2);
            };

實際上n1和n2的賦值語句的執(zhí)行時機是window.onload,那個時候input里面還沒有值,所以是NaN,

2017年3月20日 07:53