为了账号安全,请及时绑定邮箱和手机立即绑定

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


正在回答

4 回答

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

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

宝慕林5689754 提问者

由于body部分还没有执行,所以还没有id为txt1的标签,这句话不对吧,把script放在head里照样能获取body里的id吧
2019-08-27 回复 有任何疑惑可以回复我~
#2

宝慕林5689754 提问者

说错了 的确是无法获取,那我把上面的script放在</body>之前呢,这下是能获取,但是函数依旧错
2019-08-27 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

胡歌一号迷弟

可以百度一下“document.getElementById写在function外”,你就会知道原因
2019-08-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

var txta=...不写在函数代码{}里面,最后document.get...也不写在函数代码{}里面

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信