js引用代码位置问题

js引用代码位置问题

老师,以前老师讲解的是:将js代码放在body中,而您现在讲解的是:js引用代码放在了Head中

我发现了两个问题希望老师能讲解一下:

当我把js代码放在Head中的时候,代码如下:

<head>
    <meta charset="UTF-8">
    <title>Calculator</title>
    <link rel="stylesheet" type="text/css" href="css/index.css">
    <script type="text/javascript" src="js/index.js"></script>
</head>
<body onload="init()">
function init() {
    var result = document.getElementById("result");
    result.value = 0;
    mouseDownEvent();
}
function mouseDownEvent() {
    byId("num-0").onmousedown = function () {
        this.style.backgroundImage = "url('img/activation/0.png')";
    };
    byId("num-0").onmouseup = function () {
        this.style.backgroundImage = "url('img/default/0.png')";
    };
}

function byId(elementName) {
    document.getElementById(elementName);
}

这时候,运行程序,网页报错:

Uncaught TypeError: Cannot set property 'value' of null at init

但是这个错误能够用一下方法解决:将js引用代码放在body中

但是如果将引用代码放在body中,然后在body后添加onload属性调用“init()”时,会发生错误:

Uncaught TypeError: Cannot set property 'onmousedown' of undefined at mouseDownEvent,

但这个错误可以将body的onload属性去掉就可以解决。

那么请问老师:

js引用代码到底应该放在哪里?放的位置不同,他的区别又在哪里?

正在回答

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

1回答

同学你好。通常情况下,可以将 JavaScript 代码放置在 HTML 文档的任何地方。但是两种情况也要根据使用场景的不同来考虑如何使用。

1、将 JavaScript 代码放置于 HTML 文档的 <head></head> 标签之间是一个通常的做法。由于 HTML 文档是由浏览器从上到下依次载入的,这种用法,可以确保在需要使用脚本之前,它已经被载入了。在HTML中展示的内容需要先经js计算时,或者HTML绑定了js函数作为触发事件时适用于这种。

2、将 JavaScript 代码放置于 <body></body> 之间的。就是同学描述的这种情况:我们的js中需要拿到result的value值,但是dom还没有完全加载。由于 HTML 文档是由浏览器从上到下依次载入的,为避免 JavaScript 代码操作 HTML 元素时,HTML 元素还未载入而报错(对象不存在),因此需要将这段代码写到 HTML 元素后面。

如果解答了同学的疑问,望采纳~

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

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

在线咨询

领取优惠

免费试听

领取大纲

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