Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有脚本延迟的Null返回_Javascript_Html_Dom_Deferred Loading - Fatal编程技术网

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
属性不存在(即对于内联脚本),则不得使用该属性,在这种情况下,该属性将无效


此前曾问过类似问题: