2017-01-18 4 views
1

Вопрос простой, но запутанный для меня, что, когда i console.log (document.body) или (document.head) работают нормально, но когда я делаю это с document.script или document.html, эти два не являются почему? хотя все это находится в документе?Объект документа

Q2), я могу написать

document.getElementById('something')

но почему я не могу писать

document.body.getElementById('something')

хотя тело в документе и е lement в теге тела, в то время как когда-то document.body работает на разных этапах в сценарии

ответ

5

getElementByIddocument - это объект, который использует интерфейс Document из DOM. Это не метод для элементов (интерфейс Element из DOM и его специализация HTMLElement интерфейс из HTML). document.body - это элемент (HTMLBodyElement, который является HTMLElement, который является Element), а не документ.

Некоторые методы (например, querySelector) методы на какdocumentи элементов, потому что это имеет смысл для них, чтобы быть (на элемент, querySelector смотрит только внутри элемента, а не по всему документу). Но getElementById нет. (Может быть, но было бы немного странно охватить его только элементом, когда идентификаторы должны быть уникальными во всем документе.)

+0

как вы сказали querySelector - это метод как для документа, так и для элементов (например, body), поэтому как это имеет смысл на элементе и почему не getElementById на обоих? –

+0

@HaseebJumani: Как я сказал выше: * «Это может быть, но было бы немного странно охватить его только элементом, когда идентификаторы должны быть уникальными во всем документе». * –

Смежные вопросы