? ?var a=parseInt(document.getElementById("txt1").value); ?? var b=parseInt(document.getElementById("txt2").value); ?? var c=document.getElementById("select").value; ?? var d="";
var a=parseInt(document.getElementById("txt1").value); ?? var b=parseInt(document.getElementById("txt2").value); ?? var c=document.getElementById("select").value; ?? var d="";
剛開(kāi)始以為是你定義a b 的類(lèi)型錯(cuò)了,后來(lái)發(fā)現(xiàn)是你定義這三個(gè)類(lèi)型的位置不對(duì)。
按你這個(gè)代碼頁(yè)面運(yùn)行的時(shí)候先讀取了input的值。。你后面執(zhí)行點(diǎn)擊事件的時(shí)候根本沒(méi)有去值,當(dāng)然計(jì)算不出來(lái)了大兄弟
2016-03-23
Q1:放在外面為什么結(jié)果是 undifined呢?
因?yàn)閔tml的執(zhí)行順序是從上至下的。你的? <script></script>是在上面的,
所以你在執(zhí)行var a=parseInt(document.getElementById("txt1").value)時(shí);頁(yè)面中的input還沒(méi)有加載出來(lái)。獲得不到這個(gè)元素,所以顯示為undifined而不是NaN;
你可以自己測(cè)試一下:
(1)把<script>代碼</script>放在<head>里。顯示為undifined。
(2)把<script>代碼</script>放在頁(yè)面最下面<body>里。顯示為NAN;所以一般推薦將JS代碼放在下面。
Q2:但是為什么要放在函數(shù)里面呢?
? ? 如果放在外邊,頁(yè)面加載完成后就已經(jīng)執(zhí)行了
? ?var a=parseInt(document.getElementById("txt1").value);
?? var b=parseInt(document.getElementById("txt2").value);
?? var c=document.getElementById("select").value;
?? var d="";
? ?而此刻你的輸入框里還是空的。所以a =NaN,b=NaN;
? ?當(dāng)你輸入數(shù)字時(shí),? 完點(diǎn)擊“=”,調(diào)用count()方法時(shí)。a,b,的仍為NaN;
? ?放在里面,點(diǎn)擊“=”時(shí),才獲取a,b輸入框的值。所以就不為NaN ,就正確了啊。
這樣說(shuō)明白了嗎?
2016-03-22
我知道哪出錯(cuò)了,
var a=parseInt(document.getElementById("txt1").value);
?? var b=parseInt(document.getElementById("txt2").value);
?? var c=document.getElementById("select").value;
?? var d="";
應(yīng)該放在函數(shù)里面,但是為什么要放在函數(shù)里面呢?放在外面為什么結(jié)果是 undifined呢?