Javascript 带有脚本延迟的Null返回
如果我像这样创建一个本地文件Javascript 带有脚本延迟的Null返回,javascript,html,dom,deferred-loading,Javascript,Html,Dom,Deferred Loading,如果我像这样创建一个本地文件index.html: Index.HTML <!doctype html> <html> <head> <meta charset="utf-8"> <script defer> let t = document.getElementById('top'); console.log(t); </script> </
index.html
:
Index.HTML
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script defer>
let t = document.getElementById('top');
console.log(t);
</script>
</head>
<body>
<h1 id="top">Top Questions</h1>
</body>
</html>
设t=document.getElementById('top');
控制台日志(t);
首要问题
然后在我的浏览器中打开文件,我将在控制台中看到null
。如果我从defer
更改为type=“module”
,
元素按预期返回。我想defer
保留了脚本
正在运行,直到HTML被解析。为什么defer
在这种情况下不起作用
案例?
延迟
对于内联脚本不起作用。该属性不会做任何事情,就像使用async
一样。如果要使用延迟
,请使用外部脚本:
<script defer src="./myscript.js"></script>
如果使用“经典”(非模块)内联脚本,无论async
或defer
属性如何,它都会立即运行(除非该类型对JS无效,在这种情况下它根本不会运行)
作为,使用延迟
:
如果src
属性不存在(即对于内联脚本),则不得使用该属性,在这种情况下,该属性将无效
此前曾问过类似问题: