Node類型


所有的節點都繼承自Node類型,因此所有的節點都具有Node類型的所有屬性和方法。

Node類型的屬性

1 nodeType:通過nodeType可以確定一個節點屬於那一個類型的節點。

                  nodeType的值有兩種,一種是用數字表示節點的類型,另一種是用字符常量來表示,因為第二種方法在IE瀏覽器中不適用,所以全部使用第一種方

                  法來表示。

                  其中nodeType的值為1代表是元素節點,即各種標簽

                        nodeType的值為9代表文檔節點,即document節點

                        nodeType的值為3代表文本節點,即標簽內部的文字

                        nodeType的值為8代表注釋節點

                        nodeType的值為10代表documentFragment節點

                        nodeType的值為11代表特性節點,即標簽內部的sytle,id,class等特性的節點

舉例:<input type="button" value="aaa" id="_2"></input>

        var a=document.getElementsById("_2");

        if(a.nodeType==1)......//a的nodeType的值為true

2 nodeValue和nodeName:不同的節點的這兩個屬性的值是不同的,document的nodeName就為“#document”而nodeValue為null,

                                       文本節點的nodeName為“#text”,nodeValue為文本節點中文本的值

                                       在后續的文章中,會在具體的節點中進行分別介紹

3 childNodes:這個屬性對應一個NodeList類型的對象,表示某個節點的所有子節點

                     可以使用[]或者item()的方法獲得某個具體的子節點,length可以獲取子節點的個數

                     設定element為某個具有子節點的節點,假設它有三個子節點

                     element.childNodes[0]或者element.iten(0)代表它的第一個子節點,2,3代表第2,第3個子節點

                     element.chileNodes.length 代表子節點的個數,這里等於3

   childNodes雖然和Array有着類似的方法,但是它不是Array類型,是隨着節點的不同的操作動態變化的,這一點在NodeList中再進行介紹

   如果想要把childNodes類型轉化為Array類型,可以用call()方法來實現

   var ch=Array.prototype.slice.call(element.childNodes,0);

   此時,ch就變成了一個Array類型,同時數組中的內容就是element.chileNodes中的內容

   因為在IE8之前,DOM對象為COM對象,所以在IE8之前不能用js或者DOM的方法,如果想執行上述的操作,必須將二者分開

   即

   

 

parentNode:表示某個節點的父節點
firstNode:表示某個節點的第一個孩子節點
lastNode:表示某個節點的最后一個孩子節點
previousSibling:表示某個節點的上一個同胞節點
nextSibling:表示某個節點的下一個同胞節點

關系圖如下

 

 

5 hasChildNodes()方法:返回true或false,某個元素是否有孩子節點

  element代表某個節點

  element.hasChileNodes()

6 ownerDocument

  所有節點的ownerDocument屬性都指向文檔元素,即html。

  element代表任何一個節點,element.ownerDocument就是html元素,這樣可以不用層層尋找,直接跳轉到頁面頂端

Node類型中的方法

<html>

<body>

<div>

<img></img>

</div>

</body>

</html>

1 appendChild:在父節點的childNodes末尾加入一個節點

var dd=document.getElementsByTagName("div");

var ins=document.createElement("a")//創建了一個a標簽

dd[0].appendChild(ins)//這樣便把<a>標簽插入了div的chileNodes的末尾,相當於在img后面加了一個<a>標簽

2 removeChild:移除某個節點的子節點

var dd=document.getElementsByTagName("div");

var ins=document.getElementsByTagName("img")//創建了一個a標簽

dd[0].removeChild(ins[0])//將div的子節點img移除

或者dd[0].remove(dd[0].firstChild)

3 insertBefore:將某個節點插入父節點的另一個子節點之前

var dd=document.getElementsByTagName("div");

var ins=document.createElement("a")//創建了一個a標簽

dd[0].insertBefore(ins,bb[0].firstChild)//將a插入了img之前

4 replaceChild:用一個新的元素,將其父節點的某個子節點的元素替換掉

var dd=document.getElementsByTagName("div");

var ins=document.createElement("a")//創建了一個a標簽

dd[0].replaceChild(ins,bb[0].firstChild)//用a替換了img

5 cloneNode():復制節點(樹)

接收一個參數,true或false,如果為true,則復制節點以及它所有的后代節點

                                      如果為false,則只復制這一個節點

var dd=document.getElementsByTagName("div");

 

如果dd.cloneChild(true)則復制的為div節點以及img節點

如果 dd.cloneChild(false)則只復制div節點

var clone=dd .cloneChild(true)//此時clone中存儲着整個div的節點樹,但只是存儲在clone中

如果想與整個html文檔發生關聯,則需要將clone插入文檔中,用appendChild等方法。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM