屬性:
Attributes ????????????????????????????????????????????????????????????存儲節(jié)點的屬性列表(只讀)
childNodes? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 存儲節(jié)點的子節(jié)點列表(只讀)
dataType ????????????????????????????????????????????????????????????返回此節(jié)點的數據類型
Definition ????????????????????????????????????????????????????????????以DTD或XML模式給出的節(jié)點的定義(只讀)
Doctype? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指定文檔類型節(jié)點(只讀)
documentElement? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回文檔的根元素(可讀寫)
firstChild? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回當前節(jié)點的第一個子節(jié)點(只讀)
Implementation? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回XMLDOMImplementation對象
lastChild? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回當前節(jié)點最后一個子節(jié)點(只讀)
nextSibling? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回當前節(jié)點的下一個兄弟節(jié)點(只讀)
nodeName? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回節(jié)點的名字(只讀)
nodeType? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回節(jié)點的類型(只讀)
nodeTypedValue? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?存儲節(jié)點值(可讀寫)
nodeValue? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回節(jié)點的文本(可讀寫)
ownerDocument? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回包含此節(jié)點的根文檔(只讀)
parentNode? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回父節(jié)點(只讀)
Parsed? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回此節(jié)點及其子節(jié)點是否已經被解析(只讀)
Prefix? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回名稱空間前綴(只讀)
preserveWhiteSpace? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指定是否保留空白(可讀寫)
previousSibling? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回此節(jié)點的前一個兄弟節(jié)點(只讀)
Text? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回此節(jié)點及其后代的文本內容(可讀寫)
url ????????????????????????????????????????????????????????????????????????返回最近載入的XML文檔的URL(只讀)
Xml? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回節(jié)點及其后代的XML表示(只讀)
方法:
appendChild? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?為當前節(jié)點添加一個新的子節(jié)點,放在最后的子節(jié)點后
cloneNode? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回當前節(jié)點的拷貝
createAttribute? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建新的屬性
createCDATASection? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建包括給定數據的CDATA段
createComment? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建一個注釋節(jié)點
createDocumentFragment? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建DocumentFragment對象
createElement? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建一個元素節(jié)點
createEntityReference? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建EntityReference對象
createNode? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建給定類型,名字和命名空間的節(jié)點
createPorcessingInstruction? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建操作指令節(jié)點
createTextNode? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建包括給定數據的文本節(jié)點
getElementsByTagName? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回指定名字的元素集合
hasChildNodes? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回當前節(jié)點是否有子節(jié)點
insertBefore? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在指定節(jié)點前插入子節(jié)點
Load? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?導入指定位置的XML文檔
loadXML? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?導入指定字符串的XML文檔
removeChild? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?從子結點列表中刪除指定的子節(jié)點
replaceChild? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?從子節(jié)點列表中替換指定的子節(jié)點
Save? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?把XML文件存到指定節(jié)點
selectNodes? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?對節(jié)點進行指定的匹配,并返回匹配節(jié)點列表
selectSingleNode? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?對節(jié)點進行指定的匹配,并返回第一個匹配節(jié)點
transformNode? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?使用指定的樣式表對節(jié)點及其后代進行轉換
transformNodeToObject ????????????????????????????????????????使用指定的樣式表將節(jié)點及其后代轉換為對象
每個節(jié)點都有一個childNodes屬性调俘,其中保存著一個NodeList對象枢贿。NodeList是一種類數組對象,用于保存一組有序的節(jié)點,可以通過位置來訪問這些節(jié)點。請注意蓬豁,雖然可以通過方括號語法來訪問NodeList的值,而且這個對象也有l(wèi)ength屬性菇肃,但它并不是Array的實例地粪。NodeList對象的獨特之處在于,它實際上是基于DOM結構動態(tài)執(zhí)行查詢的結果琐谤,因此DOM結構的變化能夠自動反映在NodeList對象中蟆技。我們常說,NodeList是有生命、有呼吸的對象质礼,而不是在我們第一次訪問它們的某個瞬間拍攝下來的一張快照聊品。下面的例子展示了如何訪問保存在NodeList中的節(jié)點——可以通過方括號,也可以使用item()方法几苍。
var firstChild=someNode.childNodes[0];
var secondChild=someNode.childNodes.item(1);
var count=someNode.childNodes.length;
每個節(jié)點都有一個parentNode屬性翻屈,該屬性指向文檔樹中的父節(jié)點。包含在childNodes列表中的所有節(jié)點都具有相同的父節(jié)點妻坝,因此它們的parentNode屬性都指向同一個節(jié)點伸眶。此外,包含在childNodes列表中的每個節(jié)點相互之間都是同胞節(jié)點刽宪。通過使用列表中每個節(jié)點的previousSibling和nextSibling屬性厘贼,可以訪問同一列表中的其他節(jié)點。列表中第一個節(jié)點的previousSibling屬性值為null圣拄,而列表中最后一個節(jié)點的nextSibling屬性的值同樣也為null嘴秸。當然,如果列表中只有一個節(jié)點庇谆,那么該節(jié)點的previousSibling和nextSibling都為null岳掐。父節(jié)點與其第一個和最后一個子節(jié)點之間也存在特殊關系。父節(jié)點的firstChild和lastChild屬性分別指向其childNodes列表中的第一個和最后一個節(jié)點饭耳。其中:
someNode.firstChild的值始終等于someNode.childNodes[0]
someNode.lastChild的值始終等于someNode.childNodes[someNode.childNodes.length-1]
在只有一個子節(jié)點的情況下串述,firstChild和lastChild指向同一個節(jié)點
如果沒有子節(jié)點,那么firstChild和lastChild的值均為null
明確這些關系能夠對我們查找和訪問文檔結構中的節(jié)點提供極大的便利寞肖。
在反映這些關系的所有屬性當中纲酗,childNodes屬性與其他屬性相比更方便一些,因為只須使用簡單的關系指針新蟆,就可以通過它訪問文檔樹中的任何節(jié)點觅赊。另外,hasChildNodes()也是一個非常有用的方法琼稻,這個方法在節(jié)點包含一或多個子節(jié)點的情況下返回true吮螺,應該說,這是比查詢childNodes列表的length屬性更簡單的方法欣簇。
所有節(jié)點都有的最后一個屬性是ownerDocument规脸,該屬性指向表示整個文檔的文檔節(jié)點。這種關系表示的是任何節(jié)點都屬于它所在的文檔熊咽,任何節(jié)點都不能同時存在于兩個或更多個文檔中莫鸭。通過這個屬性,我們可以不必在節(jié)點層次中通過層層回溯到達頂端横殴,而是可以直接訪問文檔節(jié)點被因。
操作節(jié)點
因為關系指針都是只讀的卿拴,所以DOM提供了一些操作節(jié)點的方法。其中梨与,最常用的方法是appendChild()堕花,用于向childNodes列表的末尾添加一個節(jié)點。添加節(jié)點后粥鞋,childNodes的新增節(jié)點缘挽、父節(jié)點及以前的最后一個子節(jié)點的關系指針都會相應地得到更新。更新完成后呻粹,appendChild()返回新增的節(jié)點壕曼。來看下面的例子:
var returnedNode = someNode.appendChild(newNode);
alert(returnedNode == newNode);
alert(someNode.lastChild == newNode);
如果傳入到appendChild()中的節(jié)點已經是文檔的一部分了,那結果就是將該節(jié)點從原來的位置轉移到新位置等浊。即使可以將DOM樹看成是由一系列指針連接起來的腮郊,但任何DOM節(jié)點也不能同時出現在文檔中的多個位置上。因此筹燕,如果在調用appendChild()時傳入了父節(jié)點的第一個子節(jié)點轧飞,那么該節(jié)點就會成為父節(jié)點的最后一個子節(jié)點。
如果需要把節(jié)點放在childNodes列表中某個特定的位置上撒踪,而不是放在末尾过咬,那么可以使用insertBefore()方法。這個方法接受兩個參數:要插入的節(jié)點和作為參照的節(jié)點糠涛。插入節(jié)點后援奢,被插入的節(jié)點會變成參照節(jié)點的前一個同胞節(jié)點(previousSibling)兼犯,同時被方法返回忍捡。如果參照節(jié)點是null,則insertBefore()與appendChild()執(zhí)行相同的操作切黔。如下面的例子所示砸脊。
插入后成為最后一個子節(jié)點
var returnedNode = someNode.insertBefore(newNode, null);
alert(newNode == someNode.lastChild);
插入后成為第一個子節(jié)點
var returnedNode = someNode.insertBefore(newNode, someNode.firstChild);
alert(returnedNode == newNode);
alert(newNode == someNode.firstChild);
插入到最后一個子節(jié)點前面
var returnedNode = someNode.insertBefore(newNode, someNode.lastChild);
alert(newNode == someNode.childNodes[someNode.childNodes.length-2]);
前面介紹的appendChild()和insertBefore()方法都只插入節(jié)點,不會移除節(jié)點纬霞。而下面要介紹的replaceChild()方法接受的兩個參數是:要插入的節(jié)點和要替換的節(jié)點凌埂。要替換的節(jié)點將由這個方法返回并從文檔樹中被移除,同時由要插入的節(jié)點占據其位置诗芜。來看下面的例子瞳抓。
替換第一個子節(jié)點
var returnedNode = someNode.replaceChild(newNode, someNode.firstChild);
替換最后一個子節(jié)點
var returnedNode = someNode.replaceChild(newNode, someNode,lastChild);
在使用replaceChild()插入一個節(jié)點時,該節(jié)點的所有關系指針都會從被它替換的節(jié)點復制過來伏恐。盡管從技術上講孩哑,被替換的節(jié)點仍然還在文檔中,但它在文檔中已經沒有了自己的位置翠桦。如果只想移除而非替換節(jié)點横蜒,可以使用removeChild()方法。這個方法接受一個參數,即要移除的節(jié)點丛晌。被移除的節(jié)點將成為方法的返回值仅炊,如下面的例子所示。
移除第一個子節(jié)點
var formerFirstChild = someNode.removeChild(someNode.firstChild);
移除最后一個子節(jié)點
var formerLastChild = someNode.removeChild(someNode.lastChild);
與使用replaceChild()方法一樣澎蛛,通過removeChild()移除的節(jié)點仍然為文檔所有抚垄,只不過在文檔中已經沒有了自己的位置。前面介紹的四個方法操作的都是某個節(jié)點的子節(jié)點谋逻,也就是說督勺,要使用這幾個方法必須先取得父節(jié)點(使用parentNode屬性)。另外斤贰,并不是所有類型的節(jié)點都有子節(jié)點智哀,如果在不支持子節(jié)點的節(jié)點上調用了這些方法,將會導致錯誤發(fā)生荧恍。
————————————————
版權聲明:本文為CSDN博主「CKM10086」的原創(chuàng)文章瓷叫,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明送巡。
原文鏈接:https://blog.csdn.net/CKM10086/article/details/103532262