1. 程式人生 > 實用技巧 >JS中DOM使用的總結

JS中DOM使用的總結

原生JS中的DOM操作總結

理解:

JS中節點的劃分

JS中分為元素節點文字節點屬性節點,(註釋節點,文件節點)

<div class="kk">james</div>
<div>       元素節點
class="kk"  屬性節點
james       文字節點

節點的四大屬性

節點名稱 節點名稱(nodeName) 節點的值(nodeValue) 節點的型別(nodeType)
元素節點 與標籤同名 undefined 或者 null 1
屬性節點 屬性的名稱 屬性的值 2
文字節點 #text 文字的內容 3
註釋節點 8
文件節點 #document 9

操作

檢視元素節點

方法 解釋 結果
getElementById() 通過id屬性獲取一個元素節點的物件 返回一個物件
getElementsByTagName() 通過標籤名獲取一組元素節點物件 返回一個物件陣列
getElementsByName() 通過name屬性獲取一組元素節點物件 返回一個物件陣列
getElementsByClassName() 通過class屬性獲取一組元素節點物件(ie8及ie8以下) 返回一個物件陣列
querySelector() 根據id , class , 標籤名來篩選元素節點的物件(如果有多個,就返回第一個) 返回一個物件
querySelectorAll() 根據class 標籤名來獲取一組元素節點的物件 返回一個物件陣列

遍歷樹節點

方法 解釋
parentNode 根據當前的元素節點返回最近的父節點(親爸爸)
childNodes 根據當前元素節點返回所有的子節點(文字節點(包括空白換行),元素節點)
firstChild 返回第一個子節點
lastChild 返回最後一個子節點
nextSibling 後一個兄弟節點
previousSiling 前一個兄弟節點

很多時候,我們並不需要操作文字節點,只需要操作元素節點,只需要加一個element

方法 解釋
parentElement 返回當前元素節點的父元素節點
children 返回當前元素的元素子節點
firstElementChild 返回第一個元素節點(IE不相容)
lastElementChild 返回最後一個元素節點(IE不相容)
nextElementSiling 只返回後一個兄弟節點(IE不相容)
previousElementSibling 只返回當前一個(IE不相容)

增加節點和插入節點(常用)

#增加節點
document.createElement()
#插入節點
parentNode.appendChild()   #根據父節點,插入裡面
parentNode.insertChild(a, b) #根據父節點,把a插到b的前面
let div = document.createElement('div')
div.innerHTML = "我是插入的內容"
body.appendChild(div)   //插入到body中

修改節點

一般是修改文字內容或者屬性值,常用的就是setAttribute()、getAttribute()方法。

let a = document.getElementById('a')
a.setAttribute('class', 'box')

刪除節點

常用的是removeChild() 直接刪除選中的子節點,如果要刪除的元素不存在就會返回null;

<div id="a">
	<div id="b"></div>    
</div>

let a = document.getElementById('a')
let b = document.getElementById('b')
a.removeChild(b)

替換節點

常用的是replaceChild(new, old)

parentNode.replaceChild(new, old)

<div class="father">
    <div class="son1"></div>
  </div>
  
  <script>
    let father = document.getElementsByClassName('father')[0]
    let son1 = document.getElementsByClassName('son1')[0]
    let son2 = document.createElement('div')
    son2.setAttribute('class', 'son2')
    father.replaceChild(son2, son1)
  </script>

讀取

  • 方式一: 對於有閉合的標籤(即有開始的標籤,有結束的標籤 例如:) 可以使用innerHTML獲取內容。

但是對於單標籤來說,就不可以使用innerHTML (如果要讀取其內部的值,就直接獲取當前的元素 節點,然後.xxx就可以了,比如:.name .id 當然class要除外,因為class是JS中保留詞,需要使用.className)

  • 方式二:使用getAttribute()