我有一个简单的JS函数,可以将文本行加载到无序列表中。
的Javascript
function loadText() {
document.getElementById("text1").innerHTML = "Text1";
document.getElementById("text2").innerHTML = "Text2";
document.getElementById("text3").innerHTML = "Text3";
}
window.onload = loadText;
HTML
<ul id="textlist">
<li id="text1"></li>
<li id="text2"></li>
<li id="text3"></li>
</ul>
这实际上适用于浏览器(Chrome),但是当我使用window.onload = loadText();
代替window.onload = loadText;
时。我收到错误:
未捕获的TypeError:无法设置null
的属性'innerHTML'
我认为这是因为DOM没有被读取所以我尝试了,但是在那里遇到了同样的问题。但是,将window.onload = loadText();
更改回window.onload = loadText;
会再次有效。
感觉有点奇怪,这会导致差异。我在这里错过了什么吗?
答案 0 :(得分:5)
window.onload = loadText();
这会立即执行loadText并将其返回值存储在window.onlad
中window.onload = loadText;
这使得window.onload引用了loadText函数。现在调用window.onload()与调用loadText()
相同答案 1 :(得分:3)
window.onload = loadText;
告诉浏览器在加载文档时执行loadText
。这意味着document.getElementById
中的loadText
将可用(并且正常工作)。
window.onload = loadText();
立即执行loadText
并将返回值(undefined
)分配给window.onload
。因此,作业无用,功能也不起作用。
你想要window.onload = loadText
,我不知道你为什么试过window.onload = loadText();
。
答案 2 :(得分:0)
window.onload = loadText();
将立即执行
window.onload = loadText;
将分配值loadText并让浏览器加载完成dom