js高級程序設(shè)計(jì)筆記15

DOM

1.Node

確定Node節(jié)點(diǎn)的類型

someNode.nodeType == Node.ElEMENT_NODE //

someNode.nodeType == 1  //適用于所有瀏覽器

//nodeType  1 - 12

除了nodeType,還可以訪問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)是文檔的一部分,那就會把他從頭原來的位置移動到新的位置

replace()

#替換
someNode.replaceChild(newNode,someNode.firstChild)

remove()

someNode.remove(someNode.firstNode)

cloneNode()

someNode.cloneNode(false) //淺復(fù)制
someNode.cloneNode(true) //深復(fù)制

無論哪種復(fù)制都不指定父節(jié)點(diǎn),返回的節(jié)點(diǎn)是孤立的,深復(fù)制會復(fù)制子結(jié)構(gòu),淺復(fù)制不會

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容