把 var text = document.getElementById("text");定义成全局变量时发生错误

把 var text = document.getElementById("text");定义成全局变量时发生错误

把 var text = document.getElementById("text");定义成全局变量时发生错误


http://img1.sycdn.imooc.com//climg/601f1a2f09555e3103670109.jpg

http://img1.sycdn.imooc.com//climg/601f1a2f0969cf3204390042.jpg


为什么把text定义成全局变量后无法在init()方法里面访问text.disabled变量,但是如果我把text定义在init()方法里面就可以访问了,这是什么问题?

是不是因为我采用onload="init()"方法先加载了init()这个方法,但是上面的全局变量还没有被加载?如果是的话,那么全局变量是什么时候被加载呢?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿慧 2021-02-07 18:56:34

同学你好,同学可以测试比对一下,如 js中代码如下:

http://img1.sycdn.imooc.com//climg/601fc2fd09c3fb8e04560222.jpg

情况一:在head中引入js文件,代码如下:

http://img1.sycdn.imooc.com//climg/601fc2e009cd96ed05490287.jpg

运行结果如下:

http://img1.sycdn.imooc.com//climg/601fc34609a358c003280106.jpg

情况二:在bod标签下引入js文件,代码如下:

http://img1.sycdn.imooc.com//climg/601fc376097a40b005380084.jpg

运行结果如下:

http://img1.sycdn.imooc.com//climg/601fc3a909ba9d0a07720210.jpg

祝学习愉快~

好帮手慕阿慧 2021-02-07 11:20:07

同学你好,

1、发生错误可能是页面加载还没完成时,使用document.getElementById("text")不能获取到元素,text变量为null。建议同学将script标签写在body标签后面。避免页面加载还没完成时,script中代码无法获得页面中元素。

参考代码如下:

http://img1.sycdn.imooc.com//climg/601f5b4109956c6a05430127.jpg

另外,同学看一下页面中有没有id为text的元素。如果没有,那么document.getElementById("text")也是null。

如下:

http://img1.sycdn.imooc.com//climg/601f5c5f09d0592d05230127.jpg

2、js中全局变量在加载js文件时会被加载执行。

祝学习愉快~

  • 首先html文件里面有text这个id,其次,如果没有加载完页面,那为什么init()这个方法的定义会先于全局变量加载?

    js文件的加载顺序不是从上往下的吗

    2021-02-07 11:25:43
  • 同学你好,js文件的加载顺序是从上往下的。

    如果在<head>中引入js文件,那么在加载html页面的同时,还会执行js文件中代码,给text全局变量赋值。

    如果在html还没有加载到

    <input type="text" name="num" id="text" />元素时,js文件执行到了var text=document.getElementById("text");代码,由于在html页面中没有找到id为text的元素,所以text变量就是null,在执行后面

    text.disabled="disabled";时,由于text为null,text.disabled就会报错。

    祝学习愉快~

    2021-02-07 11:36:33
  • 解释是错误的!!!按照你这么说那些把script引用写在head里面的同时script需要使用getElementById, getElementsByName, getELementsByTagName等全都不能用,你觉得可能吗

    2021-02-07 17:27:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师