我有这个示例文档:
<html>
<body>
<script type="text/javascript">
document.body.onload = myFunc();
function myFunc() {
element = document.getElementById('myDiv');
element.innerHTML = 'Hello!';
}
</script>
<div id="myDiv"></div>
</body>
</html>
如果myFunc
是document.body.onload
的回调函数,为什么'element'为空?
相反,如果脚本在div后插入,则可以正常工作:
<html>
<body>
<div id="myDiv"></div>
<script type="text/javascript">
document.body.onload = myFunc();
function myFunc() {
element = document.getElementById('myDiv');
element.innerHTML = 'Hello!';
}
</script>
</body>
</html>
我的问题是:如果我在处理程序函数中使用
onload
事件,我是否应该拥有整个DOM?为什么不应该?
DOMContentLoaded
之前访问document.body
可能会导致错误。因此,请注意这一点 :) 即使是jquery也会检查document
对象的存在以确认dom已准备好供脚本访问。如果您将来要做很棒的事情,var body = document || document.body || document.getElementsByTagName('body')[0]
可能会有所帮助;) - Tamil