一文搞定JavaScript的節點操作
本篇文章為大家帶來了關於javascript的相關知識,其中主要介紹了關於節點操作的相關問題,包括了父級節點、子節點、兄弟節點、增加刪除複製節點等等內容,下面一起來看一下,希望對大家有幫助。
【相關推薦:javascript影片教學、web前端】
在我們的網頁中,除了用DOM提供的方法取得節點,還可以利用節點的層級關係來取得節點,都比較簡單,今天總結一下!
節點概述
網頁中的所有內容都是節點(標籤、屬性、文字、註解等),在 DOM 中,節點使用 node 來表示。
HTML DOM 樹中的所有節點均可透過 JavaScript 進行訪問,所有 HTML 元素(節點)均可修改,也可以建立或刪除。
一般地,節點至少擁有 nodeType (節點型別)、 nodeName (節點名稱)和 nodeValue (節點值)這三個基本屬性。
- 元素節點nodeType 為1
- 屬性節點nodeType 為2
- 文字節點nodeType 為3(文字節點包含文字、空格、換行等)
我們在實際開發中,節點操作主要操作的是元素節點。
節點層級
利用DOM樹可以把節點分割成不同的層級關係,常見的是父子兄弟層級關係。
1.父級節點
node.parentNode
- #parentNode屬性可以傳回某節點的父節點,注意是最近的一個父節點。
- 如果指定的節點沒有父節點則回傳null。
<p> </p><p></p> <script> var son = document.querySelector(".son"); console.log(son.parentNode); </script>
2.子節點
#1.node.childNodes (標準)
node .childNodes 傳回包含指定節點的子節點的集合,該集合為即時更新的集合。
- 我是li
- 我是li
- 我是li
- 我是li
這裡為什麼有五個text節點呢,其實是對應五個換行,看下圖:
這五個換行是文字節點,加上四個li元素節點,共9個
注意:傳回值裡麵包含了所有的子節點,包括元素節點,文字節點等。
如果只想要取得裡面的元素節點,則需要專門處理。所以我們一般不提倡使用 childNodes 。
var ul = document.querySelector('ul'); for (var i = 0;i
2.node.children (非標準)
node.children 是一個唯讀屬性,傳回所有的子元素節點。它只回傳子元素節點,其餘節點不回傳(這個是我們重點掌握的)。
雖然 children 是一個非標準,但是得到了各個瀏覽器的支持,因此我們可以放心使用。
- 我是li
- 我是li
- 我是li
- 我是li
3.第一個子節點和最後一個子節點
1.node. firstChild
2.node. lastChild
firstChild 傳回第一個子節點,找不到則回傳null ,lastChild同理。同樣,也是包含所有的節點。
3.node. firstElementChild
firstElementChild 傳回第一個子元素節點,找不到則傳回 null 。
4.node. lastElementChild
lastElementChild 傳回最後一個子元素節點,找不到則傳回 null 。
注意:這兩個方法有相容性問題,IE9以上才支援。
5.node.children[0]
5.node.children[node.children.length - 1]
注意:實際開發的寫法,不存在相容性問題。
- 我是li
- 我是li
- 我是li
- 我是li
4.兄弟节点
1.node. nextSibling
nextSibling 返回当前元素的下一个兄弟节点,找不到则返回 null 。同样,也是包含所有的节点。
2.node. previousSibling
previousSibling 返回当前元素上一个兄弟节点,找不到则返回null。同样,也包含所有的节点。
3.node. nextElementSibling
nextElementSibling 返回当前元素下一个兄弟元素节点,找不到返回 null 。
4.node. previousElementSibling
previousElementSibling 返回当前元素上一个兄弟元素节点,找不则返回 null 。
注意:这两个方法有兼容性问题,IE9以上才支持。
那么如何封装一个满足兼容性,又可以找到兄弟元素节点的函数呢
function getNextElementSibling(element){ var el = element; while(el = el.nextSibling){ if(el.nodeType == 1){ return el; } } return null; }
上面这段封装的代码就可解决,但不必考虑太多,因为ie浏览器即将要停止服务了,所以你只要记住node. nextElementSibling 这个就行,不必担心兼容性问题。
创建节点
document.createElement (’ tagName ')
document.createElenent ()方法创建由 tagName 指定的Н TML 元素。因为这些元素原先不存在,是根据我的需求动态生成的,所以我们也称为动态创建元素节点。
添加节点与添加节点
1.node. appendChild(child)
node.appendChild ()方法将一个节点添加到指定父节点的子节点列表末尾。类似 css 里面的 after 伪元素。
2.node.insertBefore(child,指定元素)
删除节点
node.removeChild(child)
node.removeChild(child) 方法从DOM中删除一个子节点,返回删除的节点。
- aniu
- marry
- tom
复制节点(克隆节点)
node.cloneNode ()
node.cloneNode ()方法返回调用该方法的节点的一个副本。也称为克隆节点/拷贝节点
1.如果括号参数为空或者为 false ,则是浅拷贝,即只克隆复制节点本身,不克降里面的子节点。
2.如果括号参数为 true ,则是深度拷贝,会复制节点本身以及里面所有的子节点。
- aniu
- marry
- tom
【相关推荐:javascript视频教程、web前端】
以上是一文搞定JavaScript的節點操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
