Почему getElementById вернул null
Вопрос
Скрипт подключён в <head> обычным тегом <script src="app.js"></script>, а в нём document.getElementById('app') возвращает null, хотя <div id="app"> в разметке есть. Какой вариант исправит это проще всего?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Заменить на
document.querySelector('#app') - Добавить
asyncк тегу скрипта - Обернуть код в
setTimeout(..., 0) - Добавить
deferк тегу скриптаправильный ответ
Разбор
Обычный скрипт в <head> выполняется, пока парсер ещё не дошёл до body, элемента в DOM нет. defer откладывает выполнение до окончания парсинга документа и сохраняет порядок скриптов. querySelector ищет в том же неготовом дереве. async выполнит скрипт сразу по загрузке, возможно до разбора div. setTimeout(0) не гарантирует, что парсинг закончится к моменту вызова.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что возвращает querySelectorAll
Следующий вопрос
Как вставить тысячу элементов быстро