HTML元素未加载到window.onload

时间:2019-08-17 23:56:52

标签: javascript html

HTML元素在window.onload上抛出null。

根据研究,应该加载。

function setData()
{
    document.getElementById("my").value = "set"; 
}

window.onload = setData();

1 个答案:

答案 0 :(得分:1)

如果执行以下操作,函数setData()将立即被调用,并且不等待窗口加载。下面的行执行右侧功能(setData()),并将其自身指定为window.onload侦听器。但是,我们目前不希望执行setData()。相反,我们希望在窗口完全加载后执行setData()

window.onload = setData();

相反,请按以下方式使用window.onload。这会将功能附加为window.onload侦听器。窗口加载完成后,它将执行函数体,实际上是对setData()的调用。

window.onload = function () {
    setData();
}

运行代码:

<script>
    function setData() {
        document.getElementById("my").value = "set";
    }
    // document.addEventListener('readystatechange', event => {
    //     setData();
    // });
    window.onload = function () {
        setData();
    }

</script>

<textarea id="my"></textarea>

还有其他几种选择:

  • 在最后body之后调用函数(在创建DOM元素后执行
  • 使用readystatechange侦听器(在文档准备就绪后执行
  • 使用jQuery $(document).ready()(在文档准备就绪后执行)

这是另一个带有readystatechange事件监听器的运行示例:

<script>
    function setData() {
        document.getElementById("my").value = "set";
    }
    document.addEventListener('readystatechange', event => {
        setData();
    });

</script>

<textarea id="my"></textarea>