2017-01-18 2 views
1

質問は単純ですが、私はconsole.log(document.body)または(document.head)両方が正常に動作しているが、私がdocument.scriptまたはdocument.htmlで行うときなぜ働いているの?これらのことはすべて文書にありますが?ドキュメントオブジェクトモデル

Q2)iは

document.getElementById('something')

を書き込むことができるが、本体が文書であるが、なぜ

document.body.getElementById('something')

を書き込むことができないと要素はbodyタグ内にもありますが、document.bodyはスクリプトのさまざまな段階で動作しますが、

答えて

5

getElementByIddocumentのメソッドです。これはDOMのDocumentインターフェイスを使用するオブジェクトです。これは要素のメソッドではありません(Element DOMとその特殊化のインターフェイス、HTMLからHTMLElementインターフェイス)。 document.bodyは、要素であり(、HTMLElement、)、ドキュメントではありません。彼らは(要素の上に、querySelectorは唯一の要素の中ではなく、文書全体に見える)であるために、それは理にかなっているので

いくつかの方法(querySelector等)は、両方document要素のメソッドです。しかしgetElementByIdはそうではありません。 (それは可能かもしれませんが、IDがドキュメント全体でユニークであるように意図されている場合、それは単なる要素にスコープするのはちょっと奇妙です。)

+0

あなたはquerySelectorがドキュメントと要素どのように要素上で意味をなさない、なぜ両方でgetElementByIdを使用できないのですか? –

+0

@HaseebJumani:私が上で述べたように、*「それは可能かもしれませんが、IDがドキュメント全体でユニークであるように意図されている場合、それを要素に限定するのはちょっと奇妙です。 –

関連する問題