在JavaScript中,屬性節(jié)點(diǎn)指的是屬性對象,代表著HTML元素的一個(gè)屬性;屬性節(jié)點(diǎn)的常量表示為“ATTRIBUTE_NODE”,代表的常量值為“2”,可以利用該常量來判斷節(jié)點(diǎn)類型。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
DOM(Document Object Model)即文檔對象模型。使用 DOM 技術(shù)可以實(shí)現(xiàn)網(wǎng)頁的動態(tài)變化,如可以動態(tài)地顯示或隱藏一個(gè)元素,改變它們的屬性,增加一個(gè)元素等。DOM 技術(shù)極大地增強(qiáng)了用戶與網(wǎng)頁的交互性。
DOM 節(jié)點(diǎn)類型
DOM 樹中的節(jié)點(diǎn)可根據(jù)不同的方式分類。根據(jù)節(jié)點(diǎn)的層次來分,主要可分為:祖先節(jié)點(diǎn)(當(dāng)前節(jié)點(diǎn)上面的所有節(jié)點(diǎn)的統(tǒng)稱)、父子節(jié)點(diǎn)(表示上下兩層節(jié)點(diǎn)之間的關(guān)系)、子孫節(jié)點(diǎn)(當(dāng)前節(jié)點(diǎn)下面的所有節(jié)點(diǎn)的統(tǒng)稱)和兄弟節(jié)點(diǎn)(具有相同父節(jié)點(diǎn)的所有節(jié)點(diǎn)統(tǒng)稱)等幾種。
根據(jù)節(jié)點(diǎn)類型來分,主要可分為:document 節(jié)點(diǎn)、元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)、文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)這幾種。不同類型的節(jié)點(diǎn)具有一個(gè)對應(yīng)的常量,代表特定的值,可使用這個(gè)常量來判斷節(jié)點(diǎn)類型,常用 HTML DOM 節(jié)點(diǎn)的常量表示及代表的值見下表。
節(jié)點(diǎn)類型 | 節(jié)點(diǎn)類型常量 | 常量值 |
---|---|---|
document 節(jié)點(diǎn) | DOCUMENT_NODE | 9 |
元素節(jié)點(diǎn) | ELEMENT_NODE | 1 |
屬性節(jié)點(diǎn) | ATTRIBUTE_NODE | 2 |
文本節(jié)點(diǎn) | TEXT_NODE | 3 |
注釋節(jié)點(diǎn) | COMMENT_NODE | 8 |
JS屬性節(jié)點(diǎn)
在 HTML DOM 中,一個(gè)屬性節(jié)點(diǎn)就是一個(gè)屬性對象,代表 HTML 元素的一個(gè)屬性。一個(gè)元素可以擁有多個(gè)屬性。元素的所有屬性存放在表示無序的集合 NamedNodeMap 中。NamedNodeMap 中的節(jié)點(diǎn)可通過名稱或索引來訪問。
使用 DOM 處理 HTML 文檔元素,有時(shí)需要處理元素的屬性,此時(shí)需要使用到屬性節(jié)點(diǎn)的屬性和相關(guān)方法。屬性節(jié)點(diǎn)的常用屬性和相關(guān)方法見下表。
屬性/方法 | 描述 |
---|---|
nodeName | name | 通過屬性對象來引用,返回元素屬性的名稱 |
nodeValue | value | 通過屬性對象來引用,設(shè)置或返回元素屬性的值 |
Item(節(jié)點(diǎn)下標(biāo)) | 返回屬性節(jié)點(diǎn)集中指定下標(biāo)的節(jié)點(diǎn) |
lengh | 返回屬性節(jié)點(diǎn)集的節(jié)點(diǎn)數(shù) |
nodeType | 返回屬性節(jié)點(diǎn)的類型值 |
注:屬性 name 和 nodeName 的作用等效,value 和 nodeValue 的作用等效。
示例:操作屬性節(jié)點(diǎn)。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>操作屬性節(jié)點(diǎn)</title> </head> <body> <a href="ex7-1.html" title="document節(jié)點(diǎn)的應(yīng)用" id="a1">document節(jié)點(diǎn)</a> <script> var oA = document.getElementById('a1'); var aAttr = oA.attributes;//獲取a元素的所有屬性節(jié)點(diǎn) console.log('a元素具有以下屬性節(jié)點(diǎn):'); for(var i = 0; i < aAttr.length; i++){//遍歷a元素的所有屬性節(jié)點(diǎn) console.log(aAttr[i]); } console.log('aAttr[0]節(jié)點(diǎn)類型為:'+aAttr[0].nodeType);//獲取第一個(gè)屬性節(jié)點(diǎn)的類型值 console.log('aAttr[0]節(jié)點(diǎn)名稱為:'+aAttr[0].nodeName);//獲取第一個(gè)屬性節(jié)點(diǎn)的節(jié)點(diǎn)名 console.log('aAttr[0]節(jié)點(diǎn)值為:'+aAttr[0].nodeValue);//獲取第一個(gè)屬性節(jié)點(diǎn)的節(jié)點(diǎn)值 </script> </body> </html>
訪問屬性節(jié)點(diǎn)列表中的元素還可以使用 item(),aAttr[0] 等效于 aAttr.item(0),另外,aAttr[0].nodeName 等效于 aAttr[0].name,aAttr[0].nodeValue 等效于 aAttr[0].value。上述代碼在 Chrome 瀏覽器中的運(yùn)行結(jié)果如圖 1 所示。
【