HTML DOM - 導(dǎo)航
通過 HTML DOM,您能夠使用節(jié)點(diǎn)關(guān)系在節(jié)點(diǎn)樹中導(dǎo)航。
HTML DOM 節(jié)點(diǎn)列表
getElementsByTagName() 方法返回節(jié)點(diǎn)列表。節(jié)點(diǎn)列表是一個(gè)節(jié)點(diǎn)數(shù)組。
下面的代碼選取文檔中的所有 <p> 節(jié)點(diǎn):
實(shí)例
var x=document.getElementsByTagName("p");
可以通過下標(biāo)號(hào)訪問這些節(jié)點(diǎn)。如需訪問第二個(gè) <p>,您可以這么寫:
y=x[1];
注釋:下標(biāo)號(hào)從 0 開始。
HTML DOM 節(jié)點(diǎn)列表長度
length 屬性定義節(jié)點(diǎn)列表中節(jié)點(diǎn)的數(shù)量。
您可以使用 length 屬性來循環(huán)節(jié)點(diǎn)列表:
實(shí)例
x=document.getElementsByTagName("p"); for (i=0;i<x.length;i++) { document.write(x[i].innerHTML); document.write("<br />"); }
例子解釋:
- 獲取所有 <p> 元素節(jié)點(diǎn)
- 輸出每個(gè) <p> 元素的文本節(jié)點(diǎn)的值
導(dǎo)航節(jié)點(diǎn)關(guān)系
您能夠使用三個(gè)節(jié)點(diǎn)屬性:parentNode、firstChild 以及 lastChild ,在文檔結(jié)構(gòu)中進(jìn)行導(dǎo)航。
請看下面的 HTML 片段:
<html> <body> <p>Hello World!</p> <div> <p>DOM 很有用!</p> <p>本例演示節(jié)點(diǎn)關(guān)系。</p> </div> </body> </html>
- 首個(gè) <p> 元素是 <body> 元素的首個(gè)子元素(firstChild)
- <div> 元素是 <body> 元素的最后一個(gè)子元素(lastChild)
- <body> 元素是首個(gè) <p> 元素和 <div> 元素的父節(jié)點(diǎn)(parentNode)
firstChild 屬性可用于訪問元素的文本:
實(shí)例
<html> <body> <p id="intro">Hello World!</p> <script> x=document.getElementById("intro"); document.write(x.firstChild.nodeValue); </script> </body> </html>
DOM 根節(jié)點(diǎn)
這里有兩個(gè)特殊的屬性,可以訪問全部文檔:
- document.documentElement - 全部文檔
- document.body - 文檔的主體
實(shí)例
<html> <body> <p>Hello World!</p> <div> <p>DOM 很有用!</p> <p>本例演示 <b>document.body</b> 屬性。</p> </div> <script> alert(document.body.innerHTML); </script> </body> </html>
childNodes 和 nodeValue
除了 innerHTML 屬性,您也可以使用 childNodes 和 nodeValue 屬性來獲取元素的內(nèi)容。
下面的代碼獲取 id="intro" 的 <p> 元素的值:
實(shí)例
<html> <body> <p id="intro">Hello World!</p> <script> var txt=document.getElementById("intro").childNodes[0].nodeValue; document.write(txt); </script> </body> </html>
在上面的例子中,getElementById 是一個(gè)方法,而 childNodes 和 nodeValue 是屬性。
在本教程中,我們將使用 innerHTML 屬性。不過,學(xué)習(xí)上面的方法有助于對 DOM 樹結(jié)構(gòu)和導(dǎo)航的理解。