是的,基本上您所做的是正确的,只是您在很多情况下都忘记了JavaScript是同步的,因此您在DOM之前运行代码在加载,有几种方法可以解决此问题:
1)检查DOM是否已完全加载,然后执行所需的任何操作,例如,您可以收听DOMContentLoaded:
<script>
document.addEventListener("DOMContentLoaded", function(event) {
console.log("DOM fully loaded and parsed");
});
</script>
2)非常常见的方法是将script标签添加到您的底部document
(在body标签之后):
<html>
<head>
</head>
<body>
</body>
<script src="/bundle.js"></script>
</html>
3)使用window.onload
,当整个页面加载时会被触发(img等)
window.addEventListener("load", function() {
console.log("Everything is loaded");
});
4)使用document.onload
,当DOM准备就绪时会触发:
document.addEventListener("load", function() {
console.log("DOM is ready");
});
还有更多选项可以检查DOM是否准备就绪,但是简单的答案是在确保在每种情况下DOM准备就绪之前都不要运行任何脚本...
JavaScript正在与DOM元素一起使用,如果它们不可用,则将返回null,可能会破坏整个应用程序...因此,请务必确保已准备就绪,然后再运行JavaScript ...