Javascript取得DOM節(jié)點
取得DOM節(jié)點的方法有很多,可以根據(jù) id屬性 、 標籤名稱 獲取,也可以取得子節(jié)點、父輩節(jié)點、上個節(jié)點和下個節(jié)點。
本節(jié)講解根據(jù)HTML標籤的id屬性和標籤名稱來取得節(jié)點。
getElementById( )方法
根據(jù)HTML標籤的id屬性來取得DOM節(jié)點請使用 getElementById( ) 方法。該方法傳回一個節(jié)點物件。
語法:
? ??document.getElementById(id)
其中,id 為HTML標籤的 id 屬性。
例如,得到id="demo"的節(jié)點的語句為:
該語句的回傳值為 [ object HTMLDivElement ] (元素節(jié)點物件)。
舉例,取得幾個典型的元素節(jié)點:
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>HTML DOM樹型結構圖</title> <div id="demo_div">我是<div>標簽</div> <p id="demo_p">我是<P>標簽</p> <h5 id="demo_h5">我是<h5>標簽</h5> <script type="text/javascript"> function getNode(ele){ alert( "獲取到的元素節(jié)點:"+ele+"\n"+ "id屬性:"+ele.getAttribute("id")+"\n"+ "節(jié)點類型:"+ele.nodeType+"\n"+ "文本內容:"+ele.firstChild.nodeValue ); } document.getElementById("demo_div").onclick=function(){ getNode(this); // this 指向當前發(fā)生鼠標單擊事件的節(jié)點 } document.getElementById("demo_p").onclick=function(){ getNode(this); // this 指向當前發(fā)生鼠標單擊事件的節(jié)點 } document.getElementById("demo_h5").onclick=function(){ getNode(this); // this 指向當前發(fā)生鼠標單擊事件的節(jié)點 } </script> </head> <body> </body> </html>
請看下面的示範
##getElementsByTagName( )方法
根據(jù)HTML標籤名稱來取得DOM節(jié)點請使用getElementsByTagName( ) 方法。此方法將得到的元素節(jié)點作為一個陣列傳回。語法:
? ??nodeObject.getElementsByTagName(tagName)
其中,nodeObject 為元素節(jié)點,tagName 為HTML標籤的名稱。
注意:getElementsByTagName() 方法可以尋找整個 HTML 文件中的所有節(jié)點,也可以尋找某個節(jié)點的子節(jié)點,使用時必須要指定尋找範圍,即指明 nodeObject 。
例如,取得HTML文件中所有的<div>標籤:
<div id="demo2"> <div>我是第 1 個<div>標簽</div> <div>我是第 2 個<div>標簽</div> <div>我是第 3 個<div>標簽</div> <div>我是第 4 個<div>標簽 <div>我是第 5 個<div>標簽</div> <div>我是第 6 個<div>標簽</div> </div> </div>
<script type="text/javascript"> // 使用 getElementsByTagName() 方法獲得 id="demo2" 的標簽內部的所有 <div> 標簽 var nodeArr=document.getElementById("demo2").getElementsByTagName("div"); var len=nodeArr.length; var nodeStr=""; for(i=0;i<len;i++){ nodeStr+="第 "+(i+1)+" 個節(jié)點的文本是:"+nodeArr[i].firstChild.nodeValue+"\n"; } document.getElementById("demo2").onclick=function(){ alert( "節(jié)點個數(shù):"+len+"\n\n"+ "節(jié)點文本:\n"+nodeStr ); } </script>
注意:
#getElementById( ) 是document (根節(jié)點)的一個方法,其他元素節(jié)點不能使用該方法。因為 id 屬性在整個HTML文件中是唯一的,因此必須從根節(jié)點開始尋找。
getElementsByTagName() 是所有元素節(jié)點的方法,不僅 document(根節(jié)點)可以使用,其他節(jié)點也可以使用。所以,根據(jù)HTML標籤名稱來取得DOM節(jié)點不僅可以從 document(根節(jié)點)開始尋找,還可以從任何其他元素節(jié)點開始尋找。