JS - 在body.onload之后元素仍然为null

时间:2017-08-07 19:58:57

标签: javascript dom onload

根据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>

1 个答案:

答案 0 :(得分:0)

在加载DOM之前,您实际上是在调用doStuff函数,因为函数名后面有括号,这会导致在遇到该行时立即调用该函数。

当您将函数注册为事件的回调时,您只想引用该函数,而不是调用它。此外,您只需注册&#34;页面&#34; load的{​​{1}}功能。

变化:

window

为:

window.document.body.onload = doStuff();

此外,您应该对代码进行现代化,而不是使用元素的事件属性(只允许将一个函数存储为对事件的回调),您应该使用 {{3}注册回调函数的方法

最后,window.onload = doStuff; 代码不再需要type属性。

script