请问,我的js代码为什么放在head里时控制台会报错,放在最下面就没有问题?

请问,我的js代码为什么放在head里时控制台会报错,放在最下面就没有问题?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<!--因涉及多个页面,请在本机上写代码,并在自己的浏览器上运行该效果-->
<a href="b3.html">go链接3</a><br>
<input type="button" value="后退1" id="btn">
<script>
var btn=document.getElementsByTagName("input")[0];
btn.onclick=function(){
history.go(-1);
}
</script>
</body>
</html>


正在回答

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

2回答

同学你好,获取input元素的这句代码,也要放在window.onload函数里面,才能保证页面加载完成后再执行onload里的函数,才可以获取到元素哦。示例

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

如果帮助到了你,欢迎采纳!

祝学习愉快~~

好帮手慕慕子 2019-05-20 18:52:13

同学你好, 因为代码是从上往下执行的, js代码放在head里面, 执行到document.getElementsByTagName("input")[0]这句的时候, 页面中还没有input这个元素, 所以获取不到元素, 导致代码报错。

建议: 将js代码放在后面, 让HTMl加载完在执行js代码

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

  • 提问者 藤六 #1
    我加了window.onload事件进行测试还是会报错呢。有什么办法可以写在前面而不保持嘛?
    2019-05-20 19:05:18
  • 好帮手慕慕子 回复 提问者 藤六 #2
    你好, 老师这边测试你的代码, 将js文件放到head中, 使用window.onload函数, 没有出现报错哦。 建议: 可以详细的描述一下是哪里报错呢,另,可以将你修改后的代码粘贴过来, 便于准确的定位和解决问题。
    2019-05-20 19:22:45
  • 提问者 藤六 回复 好帮手慕慕子 #3
    是这样的代码,我在鼠标点击事件外加了一个函数 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script> var btn=document.getElementsByTagName("input")[0]; window.onload=function(){ btn.onclick=function(){ history.go(-1); } } </script> </head> <body> <!--因涉及多个页面,请在本机上写代码,并在自己的浏览器上运行该效果--> <a href="b3.html">go链接3</a><br> <input type="button" value="后退1" id="btn"> </body> </html>
    2019-05-20 23:08:31
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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