Да, в основном то , что вы сделали, правильно, за исключением того, что вы забыли, что 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, прежде чем делать это ...