DOM
1.Node
確定Node節(jié)點(diǎn)的類型
someNode.nodeType == Node.ElEMENT_NODE //
someNode.nodeType == 1 //適用于所有瀏覽器
//nodeType 1 - 12
除了nodeType,還可以訪問(wèn)nodeName 和 nodeValue
2.節(jié)點(diǎn)關(guān)系
var firstChild = someNode.ChildNodes[0];
var secondChild = someNode.ChildNodes.item(1);//兩種方法均可以
var count = someNode.ChildNodes.length//獲取子節(jié)點(diǎn)個(gè)數(shù)
#ChildNodes和arguments一樣孵构,并非真正的數(shù)組,在必要時(shí)需要轉(zhuǎn)換成數(shù)組
Array.prototype.slice.call(someNode.childNodes,0);
#每一個(gè)node元素都有nextSibling和previousSibling兩個(gè)屬性描馅,指向后繼和前繼元素
if(someNode.nextSibling == null) //這是最后一個(gè)元素
if (someNode.previousSibling == null) //這是第一個(gè)元素
3.操作節(jié)點(diǎn)
insertBefore()
returnNode = someNode.insertBefore(newNode,null);//當(dāng)?shù)诙€(gè)參數(shù)為null時(shí),插入到最后旁舰,如果為節(jié)點(diǎn)锋华,則插入其之前
newNode == someNode.lastChild //true
returnNode = someNode.insertBefore(newNode,someNode.firstNode)
newNode == someNode.firstNode //true
appendChild()
var returnNode == some.appendChild(someNode,firstChild);
returnNode == someNode.firstChild // false
returnNode == someNode.lastChild //true
//如果傳入的節(jié)點(diǎn)是文檔的一部分,那就會(huì)把他從頭原來(lái)的位置移動(dòng)到新的位置
replace()
#替換
someNode.replaceChild(newNode,someNode.firstChild)
remove()
someNode.remove(someNode.firstNode)
cloneNode()
someNode.cloneNode(false) //淺復(fù)制
someNode.cloneNode(true) //深復(fù)制
無(wú)論哪種復(fù)制都不指定父節(jié)點(diǎn)鬓梅,返回的節(jié)點(diǎn)是孤立的供置,深復(fù)制會(huì)復(fù)制子結(jié)構(gòu),淺復(fù)制不會(huì)