根据this question,当调用body onload时,文档中的所有对象都在DOM中,并且所有图像和子帧都已完成加载。
我有一些JS应该在body onload上触发,但是我getElementByID
的尝试正在返回null
,这让我觉得它比我想象的还要早。
我对body.onload
的解释是错误还是我做错了什么?
这是我的代码:
<script type="text/javascript">
window.document.body.onload = doStuff;
function doStuff() {
var txtElement = document.getElementById("myTextField");
if (txtElement != null) {
alert(txtElement.value);
}
else {
alert("Element not found!"); //This alert is always thrown
}
}
</script>
答案 0 :(得分:0)
在加载DOM之前,您实际上是在调用doStuff
函数,因为函数名后面有括号,这会导致在遇到该行时立即调用该函数。
当您将函数注册为事件的回调时,您只想引用该函数,而不是调用它。此外,您只需注册&#34;页面&#34; load
的{{1}}功能。
变化:
window
为:
window.document.body.onload = doStuff();
此外,您应该对代码进行现代化,而不是使用元素的事件属性(只允许将一个函数存储为对事件的回调),您应该使用 {{3}注册回调函数的方法。
最后,window.onload = doStuff;
代码不再需要type
属性。
script