3

我有这个示例文档:

<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

相反,如果在 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?为什么我不应该?

4

2 回答 2

2

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

而是分配函数,它将起作用:

document.body.onload = myFunc;

您还应该var element在函数中使用以避免创建全局变量。


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

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

但我们不要那样做。这里没有任何意义。;)

于 2012-04-25T21:53:03.087 回答
0

改用这个

document.body.onload = myFunc;

或者

document.body.onload = function() {
    myFunc();
};
于 2012-04-25T21:52:19.117 回答