var txta=...不寫在函數代碼{}里面,最后document.get...也不寫在函數代碼{}里面
<!DOCTYPE html>
<html>
?<head>
? <title> 事件</title>??
? <script type="text/javascript">
? ? var txta=document.getElementById("txt1").value;
? ? var txtb=document.getElementById("txt2").value;
? ? var txtc=document.getElementById("select").value;
? ? var result;
? ? function count(){
? ? ? ? switch(txtc){
? ? ? ? ? ? case "+":result=parseInt(txta)+parseInt(txtb);break;
? ? ? ? ? ? case "-":result=txta-txtb;break;
? ? ? ? ? ? case "*":result=txta*txtb;break;
? ? ? ? ? ? case "/":result=txta/txtb;break;
? ? ? ? ? ? }
? ?}
? ? document.getElementById("fruit").value=result;
? </script>?
?</head>?
?<body>
? ?<input type='text' id='txt1' />?
? ?<select id='select'>
<option value='+'>+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
? ?</select>
? ?<input type='text' id='txt2' />?
? ?<input type='button' value=' = ' onclick="count()"/> <!--通過 = 按鈕來調用創建的函數,得到結果-->?
? ?<input type='text' id='fruit' />? ?
?</body>
</html>
我知道開頭var txta=document.等等和結尾document.getElementById("fruit").value=result;這兩東西必須寫在函數代碼{}里才是對的,我想知道為什么這樣子它就錯了,觸犯了哪個原理?
2019-08-28
寫在外面,沒點擊按鈕就運行函數之外的代碼,此時那些框框里沒有任何用戶輸入的數據,value為空,同理,result尚未被賦值。
靠網友是不行的,還是得自己摸索。
2019-08-27
我大概知道原因了,是不是瀏覽器是按照先后順序執行代碼的,函數里的代碼需要點擊才能執行,那兩個東西在外面的話,早就被執行了
2019-08-27
代碼的執行是有先后順序的,先執行script里面的(函數是調用時才執行),所以你寫在函數外面的部分會比body部分先執行,由于body部分還沒有執行,所以還沒有id為txt1的標簽,所以document.getElementById("txt1").value根本得不到,所以會錯誤。
2019-08-27
寫在外面函數switch就沒辦法獲取到txt1 txt2 selec的值了,個人是這么理解的,初學者勿噴