gpt4 book ai didi

javascript - 为什么不是 (function(){}());工作,但 window.onload 是?

转载 作者:行者123 更新时间:2023-11-30 08:44:56 25 4
gpt4 key购买 nike

前几天我在试验 javascript,想看看某个功能是否可行。所以我做了我的 HTML:

<body>
<p id="paragraph"></p>
</body>

(当然,在实际文档中我已经设置了文档类型并创建了 html 标签等等)

然后编写了我的 javascript(已正确链接到头部):

(function(){
document.getElementById("paragraph").innerText = "Hi there!";
}());

现在,我打开我的 html 并且有点困惑为什么我的 <p>不包含任何文本,所以我认为可能是 IIFE没有在页面加载时运行,所以我尝试了其他方法:

(function(){
console.log("Hi there!");
}());

再次打开,发现javascript运行正常;控制台像往常一样打印了“你好”。我现在有点困惑,所以我尝试了:

window.onload = function(){
document.getElementById("paragraph").innerText = "Hi there!";
}

一切都很完美!该段落包含“你好”,就像它第一次应该有的那样(好吧,我想是这样)!

谁能解释这种荒谬的行为?为什么不是 (function(){/*stuff*/}());.innerText 工作?

最佳答案

浏览器在大多数情况下的工作方式是,它们首先处理 html 文件(包括按顺序执行其中的任何脚本),然后创建 DOM 元素,例如您的段落。

所以当你的 IIFE 被执行时,这个段落还不存在(当然这一定也打印了一些东西到你的控制台)。

console.log 是不同的东西 - console 对象甚至在 html 加载之前就存在,这就是它工作正常的原因。

此外,您需要在 getElementById 中使用小写的 d

关于javascript - 为什么不是 (function(){}());工作,但 window.onload 是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22835195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com