Так, в основному те, що ви зробили правильно, за винятком того, що ви забуваєте, що JavaScript синхронізується в багатьох випадках, тому ви запускаєте код до завантаження DOM , існує кілька способів вирішити це:
1) Перевірте, чи повністю завантажений DOM , а потім робіть все, що завгодно, ви можете слухати DOMContentLoaded, наприклад:
<script>
document.addEventListener("DOMContentLoaded", function(event) {
console.log("DOM fully loaded and parsed");
});
</script>
2) Дуже поширеним способом є додавання тегу сценарію в нижній частині вашого 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, і якщо вони недоступні, повернеться до нуля , може порушити всю програму ... тому завжди переконайтеся, що ви повністю готові запустити JavaScript, перш ніж робити ...