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

无法将内联 JS 放入外部 JS 并获得相同的结果

无法将内联 JS 放入外部 JS 并获得相同的结果

阿波罗的战车 2022-07-15 09:28:29
我正在尝试为我拥有的项目创建一个 gif 预加载器。在当前课程之前的课程中,我们被允许将 JS 内联,如下所示:<script>    let loader = document.getElementById("loader");    window.addEventListener("load", function () {        loader.style.height = "400px";        loader.style.width = "400px";        loader.style.borderRadius = "50%";        loader.style.visibility = "hidden";    });</script>这使用以下 HTML 和 CSS 运行:HTML<div id="loader">    <img src="images/pepper.gif" alt="loading animation"/></div>CSS#loader {    height: 2000px;    width: 2000px;    background-color: black;    position: fixed;    top: 50%;    left: 50%;    transform: translate(-50%, -50%);    z-index: 999;    transition: all .5s;}#loader img {    position: absolute;    top: 50%;    left: 50%;    transform: translate(-50%, -50%);}这工作得很好。但是,在本课程中,要求我们将 JS 放在外部文件中。我已经像这样链接了文件<script src="js/index.js"></script>在 HTML 的 head 标签中。JS 看起来是这样的(我们需要使用 IIFE):(function () {    "use strict";    let loader = document.getElementById("loader");    window.addEventListener("load", function () {        loader.style.height = "400px";        loader.style.width = "400px";        loader.style.borderRadius = "50%";        loader.style.visibility = "hidden";    });})();我的问题是,现在,当在外部文件中时,gif 将永远留在屏幕上。当它内联时,它会加载一段时间,然后显示站点的内容。谁能帮我解决这个问题?
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

如果你的JS在<head>part,那document.getElementById("loader")null因为你没有等待DOM准备好,所以它还不存在。如果您使用 打开浏览器的开发者控制台F12,您将看到:

未捕获的类型错误:无法读取 null 的属性“样式”

要么把你的脚本放在结束</body>标签之前,要么用以下代码包装你的代码:

addEventListener('DOMContentLoaded', function() { /* code */ });


查看完整回答
反对 回复 2022-07-15
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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