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

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;这两东西必须写在函数代码{}里才是对的,我想知道为什么这样子它就错了,触犯了哪个原理?


提问者:宝慕林5689754 2019-08-27 00:40

个回答

  • 宝慕林5689754
    2019-08-28 23:32:08

    写在外面,没点击按钮就运行函数之外的代码,此时那些框框里没有任何用户输入的数据,value为空,同理,result尚未被赋值。

    靠网友是不行的,还是得自己摸索。

  • 宝慕林5689754
    2019-08-27 17:06:03

    我大概知道原因了,是不是浏览器是按照先后顺序执行代码的,函数里的代码需要点击才能执行,那两个东西在外面的话,早就被执行了

  • 胡歌一号迷弟
    2019-08-27 15:18:33

    代码的执行是有先后顺序的,先执行script里面的(函数是调用时才执行),所以你写在函数外面的部分会比body部分先执行,由于body部分还没有执行,所以还没有id为txt1的标签,所以document.getElementById("txt1").value根本得不到,所以会错误。

  • 吴铁蛋
    2019-08-27 15:13:29

    写在外面函数switch就没办法获取到txt1 txt2 selec的值了,个人是这么理解的,初学者勿喷