javascript - 未在 window.onload 上加载 HTML 元素
问题描述
HTML 元素在 window.onload 上抛出 null。
根据研究,它应该加载。
function setData()
{
document.getElementById("my").value = "set";
}
window.onload = setData();
解决方案
如果您执行以下操作,该函数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>
推荐阅读
- typescript - 使用 .jsx 时,Visual Studio 2019 代码格式化停止
- jq - 通过 slack API 获取共享频道列表和加入用户列表
- python - orientation_histogram[:, :, i] = temp_filt[subsample] TypeError: slice indices must be integers or None or have an __index__ method
- django - 如何为连接模型编写序列化程序?
- ios - iOS 13 和 iPhone 11 Pro 模拟器下的 tableView.rowHeight = UITableView.automaticDimension 导致无限更新子视图循环
- spring-boot - Spring-boot BASIC Authentication 在 IE 浏览器中不起作用
- javascript - 列表从容器底部开始并向上附加
- python - 如何在没有数据库的情况下使用 JWTTokenUserAuthentication 进行身份验证
- python - 如何避免 Python 中的默认事件日志记录
- javascript - 为什么我们需要在 webpack 中排除 node_modules?