DOM へのアクセスは document から始まります。このオブジェクトは要素を検索および変更するための一連のメソッドを提供します。
DOM ルート。ノードは document.documentElement です。この特定の属性は、最上位の HTML タグにアクセスするために使用されます。
もう 1 つの開始点は、BODY タグを表す document.body です。 >どちらもエントリ ポイントとして有効ですが、document.body は null にすることもできます。
たとえば、HEAD 内のスクリプトが document.body にアクセスする場合、この属性の値は null で置き換えられます。現時点では BODY タグがないため、当然です。
以下の例では、ポップアップ ボックスは null を出力します。
コード名
<!DOCTYPE HTML><html> <head> <script> alert("Body from HEAD: "+document.body) // null </script> </head> <body> <div>The document</div> <script> // different browsers output different text here, // because of different implementations of toString alert("Body from inside body: " + document.body) </script> </body></html>
上記のルールをより直観的に説明すると、スクリプトの実行時に、参照された要素がまだブラウザーによってレンダリングされていないということになります。
要素の子要素を取得するには、いくつかの方法があります。
要素は、配列を返す childNodes を使用してアクセスされる子ノードを参照します。
SCRIPT
上記の例では、document.body.childNodes[1] は DIV 要素です (IE<9 を除くすべてのブラウザーでは)。空白のノードはありません。したがって、 document.body.childNodes [1] は UL です。
<!DOCTYPE HTML><html> <body> <div>Allowed readers:</div> <ul> <li>Bob</li> <li>Alice</li> </ul> <!-- a comment node --> <script> function go() { var childNodes = document.body.childNodes for(var i=0; i<childNodes.length; i++) { alert(childNodes[i]) } } </script> <button onclick="go()" style="width:100px">Go!</button> </body></html>
これにはすべての要素が含まれています。統合された例を見てみましょう。ただし、childNodes の代わりに子を使用します。
ここではすべてのタグ要素が出力されます。
子接続
または一連の子要素を渡すだけでは十分ではありません。それらへのアクセスが十分に便利ではないためです。
<!DOCTYPE HTML><html> <body> <div>Allowed readers:</div> <ul> <li>Bob</li> <li>Alice</li> </ul> <!-- a comment node --> <script> function go() { var children = document.body.children for(var i=0; i<children.length; i++) { alert(children[i]) } } </script> <button onclick="go()" style="width:100px">Go!</button> </body></html>
これらは、同じ一貫性に基づいた childNodes インデックスです。
parentNode 、previousSibling および nextSibling
var body = document.body alert(body.firstChild === body.childNodes[0])alert(body.lastChild === body.childNodes[body.childNodes.length-1])
例:
次の図は (空白タグを除く) を示しています:
<!DOCTYPE HTML><html><head> <title>My page</title></head><body> <div>The header</div> <ul><li>A list</li></ul> <div>The footer</div></body> </body></html>
概要
DOM ツリーは密接に接続されています:
子
Children/childNodes 、 firstChild 、 lastChild
左と右の兄弟
previousSibling/nextSibling
要素 (子ノード、親ノード、隣接ノード) がない場合、ブラウザーはすべての接続関係が正しいことを確認します。
「フロントエンド プログラミング開発」、「バックエンド開発」、「モバイル開発」など
オリジナルのコンテンツ。転載する場合は出典を示してください。