JavaScript onload和DOM

JavaScript onload和DOM,javascript,dom,onload-event,Javascript,Dom,Onload Event,我有以下示例文档: <html> <body> <script type="text/javascript"> document.body.onload = myFunc(); function myFunc() { element = document.getElementById('myDiv'); element.in

我有以下示例文档:

<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>
我的问题是:如果我在处理函数中使用
onload
事件,我应该拥有整个DOM吗?为什么不可以呢?

用这个代替

document.body.onload = myFunc;


问题是您正在立即调用该函数(并分配其返回值)

改为分配函数,它将工作:

document.body.onload = myFunc;
您还应该在函数中使用
var元素
,以避免创建全局变量


或者,如果你想迷惑人们:

document.body.onload = myFunc();
function myFunc() {
    return function() {
        var element = document.getElementById('myDiv');
        element.innerHTML = 'Hello!';
    };
}

但是让我们不要那样做。这在这里毫无意义

你睁开了我的眼睛!哈哈,谢谢你!尽管ThiefMaster指出了代码中的错误,但这可能对您有所帮助-在
DOMContentLoaded
之前访问
document.body
可能会给您带来错误。所以,也要注意:)甚至jquery也会检查
document
对象是否存在,以确认dom已准备好供脚本访问
var body=document | | | document.body | | | document.getElementsByTagName('body')[0]
如果您想在将来做大事,可能会很有帮助;)
document.body.onload = myFunc;
document.body.onload = myFunc();
function myFunc() {
    return function() {
        var element = document.getElementById('myDiv');
        element.innerHTML = 'Hello!';
    };
}