总是报错,不知道怎么解决

总是报错,不知道怎么解决

function byId(id){
 return typeof(id) === "string"?document.getElementById(id):id;
}
//全局变量
var index=0,timer=null,
 pics=byId("banner").getElementsByTagName("div"),
 len=pics.length;
 console.log(len);
 
 
 
 
 pictureGun.js:8 Uncaught TypeError: Cannot read property 'getElementsByTagName' of null


正在回答

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

2回答

 同学你好,这里是因为浏览器加载html是从上到下进行加载的,如果将js代码编写在head标签中,这样就会首先加载js代码,然后在js中获取id为banner的元素,但由于html的下面的标签还没有被浏览器加载到,所以会报错,获取为空。

 而如老师一样将js的代码编写在body结束标签上面,则就可以避免 js 代码操作 HTML 元素时,HTML 元素还未载入而失效的问题。如:

http://img1.sycdn.imooc.com//climg/5e4b936a096586d507070120.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


好帮手慕酷酷 2020-02-17 17:59:23

同学你好,根据报错信息表示读取到的id为banner里面div为null。

建议同学检查一下html中是否将如下div的id设置为banner了,如果没有,需要进行添加,具体如下:

http://img1.sycdn.imooc.com//climg/5e4a63c309432f6710120340.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕戎禧989_ #1
    有的,完全和图片一样
    2020-02-17 19:04:32
  • 好帮手慕酷酷 回复 提问者 慕戎禧989_ #2
    同学你好,由于同学没有粘贴出完整的代码,老师无法为同学调试,建议同学将html、js等完整的代码粘贴出来,老师给同学调试一下。如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2020-02-18 09:41:14
  • 提问者 慕戎禧989_ 回复 好帮手慕酷酷 #3
    我找到原因了。报错是因为我把<script type="text/javascript" src="../js/script.js"></script>写在了<head>里面,而老师写在了<body>中,换了位置就可以了。 我想知道写在这两个里面的区别是什么,同样是引用js文件,为什么写在<head>里面会报错?
    2020-02-18 13:11:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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