Вопрос простой, но сбивает меня с толку: когда я использую console.log(document.body) или (document.head), оба работают нормально, но когда я делаю это с document.script или document.html, эти два не работают, почему? хотя все это есть в документе?
Q2) я могу написать
document.getElementById('something')
но почему я не могу написать
document.body.getElementById('something')
хотя тело находится в документе, а элемент также в теге body, а иногда document.body работает на разных этапах скрипта
Ответ 1 · рейтинг 6 · T.J. Crowder
getElementById - это метод document, который представляет собой объект, использующий Document. интерфейс из DOM. Это не метод для элементов (интерфейс Element из DOM и его специализация HTMLElement из HTML). document.body - это элемент (HTMLBodyElement, который является HTMLElement, который является Element), а не документ.
Некоторые методы (например, querySelector) являются методами элементов обоих document и, потому что для них имеет смысл быть (для элемента querySelector смотрит только внутри элемента, а не по всему документ). Но getElementById нет. (Может быть, но было бы немного странно ограничивать его только элементом, когда идентификаторы должны быть уникальными во всем документе.)