document.querySelector('missingSelector')
возвращает null
document.querySelectorAll('missingSelector')
возвращает NodeList
(.length = 0)
Поэтому убедитесь, что содержимое DOM загружено и готово для поиска. Оберните ваш код с помощью window.onload = function(){...your code here}
или другими способами.
И будет лучше, если вы положите свой скрипт в конец <body>
прямо перед </body>
.
Причина в синтаксическом анализе и интерпретаторе машина, которая принимает значения переменных на первом цикле. Таким образом, переменные сначала принимают значения undefined
или null
. Также DOM Structure требуется некоторое время для сборки, в это время js уже работает.
Лучше потренировать сценарий, но он не дает 100% гарантии. Лучше всего переносить ваш зависящий от кода DOM в window.onload
или "DOMContentLoaded"
eventListener документа.
Вот почему лучше инициализировать и определить все ваши функции и константы в отдельном файле или вне основного функция (напр. window.onload). Внутри только в зависимости от DOM элементов функции и события.