js DOM模型操作
例:<a href=”http://www.cnblogs.com/shuz”>私のdotnet小屋</a>
(1)a是元素節(jié)點
(2)“私のdotnet小屋”是文本節(jié)點
(3)href=”http://www.cnblogs.com/shuz”是屬性節(jié)點
DOM節(jié)點的屬性
|
屬性 |
類型 |
說明 |
|
nodeName |
String |
節(jié)點名稱,根據節(jié)點的類型而定義 |
|
nodeValue |
String |
節(jié)點的值,根據節(jié)點的類型而定義 |
|
nodeType |
Number |
節(jié)點類型,1為元素節(jié)點,2為屬性節(jié)點,3為文本節(jié)點 |
|
firstChild |
Node |
指向childNodes列表的第一個節(jié)點 |
|
lastChild |
Node |
指向childNodes列表的最后一個節(jié)點 |
|
childNodes |
NodeList |
所有子節(jié)點列表,childNodes[i]可以訪問第i+1個節(jié)點 |
|
parentNode |
Node |
指向節(jié)點的父節(jié)點,如果已是根節(jié)點,則返回null |
|
previousSibling |
Node |
指向前一個兄弟節(jié)點,如果已是第一個節(jié)點,則返回null |
|
nextSibling |
Node |
指向后一個兄弟節(jié)點,如果已是最后一個節(jié)點,返回null |
|
Attributes |
NameNodeMap |
包含一個元素特性的Attr對象,僅用于元素節(jié)點 |
|
className |
String |
節(jié)點的CSS類 |
|
innerHTML |
String |
某個標記之間的所有內容,包括代碼本身 |
(1)訪問節(jié)點:
【通過標簽名】
document.getElementsByTagName(sTagName)方法:返回一個包含某個相同標簽名的元素節(jié)點列表
【通過標簽ID】
document.getElementById(sElementId)方法:返回Id為指定值的元素節(jié)點
【訪問前一個節(jié)點】兼容IE和FireFox
(自定義)
function prevSib(oNode){
var oTempFirstNode=oNode.parentNode.firstChild;
//判斷是否是第一個節(jié)點,如果是則返回null
if(oNode==oTempFirstNode)
return null;
var oTempNode=oNode.previousSibling;
//逐一搜索前面的兄弟節(jié)點,直到發(fā)現(xiàn)元素節(jié)點為止
while(oTempNode.nodeType!=1 && oTempNode.previousSibling!=null)
oTempNode=oTempNode.previousSibling;
//三目運算符,如果是元素節(jié)點則返回節(jié)點本身,否則返回null
return (oTempNode.nodeType==1)?:oTempNode:null;
}
【訪問后一個節(jié)點】兼容IE和FireFox
(自定義)
function nextSib(oNode){
var oTempLastNode=oNode.parentNode.lastChild;
//判斷是否是最后一個節(jié)點,如果是則返回null
if(oNode==oTempLastNode)
return null;
var oTempNode=oNode.nextSibling;
//逐一搜索后面的兄弟節(jié)點,直到發(fā)現(xiàn)元素節(jié)點為止
while(oTempNode.nodeType!=1 && oTempNode.nextSibling!=null)
oTempNode=oTempNode.nextSibling;
//三目運算符,如果是元素節(jié)點則返回節(jié)點本身,否則返回null
return(oTempNode.nodeType==1)?oTempNode:null;
}
(2)判斷一個節(jié)點是否有子節(jié)點:
NodeObject.hasChildNodes()方法:當childNodes包含一個或多個節(jié)點時,返回true
(3)設置節(jié)點屬性:
eleNode.getAttribute(attrNode)方法:返回eleNode元素的attrNode屬性
eleNode.setAttribute(attrNode,sNewValue)方法:設置eleNode元素的attrNode屬性的值為sNewValue
(4)創(chuàng)建節(jié)點:
document.createElement(eleNode)方法:創(chuàng)建一個元素節(jié)點eleNode
document.createTextNode(textNode)方法:創(chuàng)建一個文本節(jié)點textNode
document.createDocumentFragment()方法:創(chuàng)建文檔碎片節(jié)點
(5)添加節(jié)點:
eleNode.appendChild(textNode)方法:將textNode節(jié)點添加到childNodes的末尾
(6)刪除節(jié)點:
oNode.parentNode.removeChild(oNode)方法:從childNodes中刪除oNode節(jié)點
(7)替換節(jié)點:
oNode.parentNode.replaceChild(oNewNode,oOldNode)方法:將childNodes中的oOldNode節(jié)點替換成oNewNode節(jié)點
(8)在特定節(jié)點前插入節(jié)點:
oTargetNode.parentNode.insertBefore(oNewNode,oTargetNode)方法:在childNodes中的oTargetNode節(jié)點之前插入oNewNode節(jié)點
(9)在特定節(jié)點后插入節(jié)點:
(自定義)oTargetNode.parentNode.insertAfter(oNewNode,oTargetNode)方法:在childNodes中的oTargetNode節(jié)點之后插入oNewNode節(jié)點
function insertAfter(oNewNode,oTargetNode){
var oParentNode=oTargetNode.parentNode;
if(oParentNode.lastChild==oTargetNode)
oParentNode.appendChild(oNewNode);
else
oParentNode.insertBefore(oNewNode,oTargetNode.nextSibling);
}
相關文章
利用js查找數(shù)組中指定元素并返回該元素的所有索引示例
在js數(shù)組中查找特定的元素相信對大家來說再熟悉不過了,但越簡單的東西越可能出錯,小編最近就犯了這樣的錯誤,所以想著干脆將實現(xiàn)的代碼整理下來,方便自己以后需要的時候,或者有需要的朋友們參考學習,下面來一起看看吧。2017-03-03
JS組件庫AlloyTouch實現(xiàn)圖片輪播過程解析
這篇文章主要介紹了JS組件庫AlloyTouch實現(xiàn)圖片輪播組件過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05
JavaScript html5 canvas畫布中刪除一個塊區(qū)域的方法
這篇文章主要介紹了JavaScript html5 canvas畫布中刪除一個塊區(qū)域的方法,涉及JavaScript結合html5操作canvas畫布圖形繪制的技巧,需要的朋友可以參考下2016-01-01
uni-app如何頁面?zhèn)鲄?shù)的幾種方法總結
這篇文章主要介紹了uni-app如何頁面?zhèn)鲄?shù)的幾種方法總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04

