JavaScript childNodes
此屬性可以獲取指定元素的所有直接子節點。
所謂直接子節點就是第一級子節點,再深層次的後代節點不包括在內。
childNodes屬性的功能與children屬性類似,異同點總結如下:
(1).children非W3C標準屬性。
(2).childNodes獲取所有型別子節點,children只獲取一級子元素節點。
關於children屬性可以參閱JavaScript children一章節。
語法結構:
[JavaScript] 純文字檢視 複製程式碼elementNode.childNodes
瀏覽器支援:
(1).IE瀏覽器支援此屬性。
(2).edge瀏覽器支援此屬性。
(3).谷歌瀏覽器支援此屬性。
(4).火狐瀏覽器支援此屬性。
(5).opera瀏覽器支援此屬性。
(6).safria瀏覽器支援此屬性。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let odiv=document.getElementById("box"); let oshow=document.getElementById("show"); let obt=document.getElementById("bt"); obt.onclick = function () { oshow.innerHTML = odiv.childNodes.length; } } </script> </head> <body> <div id="show"></div> <div id="box"> <div></div> <div></div> </div> <input type="button" id="bt" value="檢視效果" /> </body> </html>
程式碼執行效果截圖如下:
有執行結果可以得出box元素具有五個子節點。
相信,肯定有不少初學者對此產生疑惑,box元素下明明只有兩個div元素,怎麼會有5個子節點。
在前面提到過,childNodes獲取子節點沒有型別限制,div是兩個元素節點,還有三個文字節點。
這是因為空格和換行被看做一個文字節點,5個子節點 = 三個文字節點 + 二個元素節點。
瀏覽器相容問題:
(1).IE9+和其他標準瀏覽器返回5。
(2).IE9以下瀏覽器會忽略文字和空格,所以返回2。
通常情況下,我們只需要獲取子元素節點,children屬性可以很好的獲得。
但是由於children屬性是非w3c標準,所以有很大可能突然不被某一些瀏覽器支援。
所以還是使用childNodes更加穩妥,不過需要將文字節點過濾。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function() { let obox=document.getElementById("box"); let childNodes = obox.childNodes; let oshow=document.getElementById("show"); let arr = []; for (let index = 0; index < childNodes.length; index++) { if (childNodes[index].nodeType != 1) { continue; } else { arr.push(childNodes[index]); } } oshow.innerHTML = arr.length; } </script> </head> <body> <div id="show"></div> <ul id="box"> <li>螞蟻部落一</li> <li>螞蟻部落二</li> <li>螞蟻部落三</li> <li>螞蟻部落四</li> </ul> </body> </html>
程式碼執行效果截圖如下:
上述程式碼通過for迴圈將文字節點過濾掉,就實現了children相同的功能。
相關閱讀:
(1).for迴圈可以參閱JavaScript for 迴圈語句一章節。
(2).nodeType可以參閱JavaScript nodeType節點型別一章節。
(3).continue可以參閱JavaScript break與continue語句一章節。
(4).push方法可以參閱JavaScript push()一章節。
相關文章
- JavaScript之childNodes 和 children 區別JavaScript
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- javaScript系列[06]-javaScript和thisJavaScript
- [Javascript] How javascript read the property?JavaScript
- javaScript系列[05]-javaScript和JSONJavaScriptJSON
- “This” is For JavaScriptJavaScript
- This in JavaScriptJavaScript
- JavaScript -"this"JavaScript
- JavaScriptJavaScript
- javascript ??JavaScript
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- [Javascript] Understanding JavaScript Proxies with Symbol.toPrimitiveJavaScriptSymbolMIT
- JavaScript 教程之JavaScript常用框架簡介JavaScript框架
- [Javascript] Perform Set Operations using JavaScript Set MethodsJavaScriptORM
- javascript — == vs ===JavaScript
- JavaScript selectedIndexJavaScriptIndex
- JavaScript deleteCell()JavaScriptdelete
- JavaScript lastElementChildJavaScriptAST
- JavaScript hasAttribute()JavaScript
- JavaScript getAttributeNode()JavaScript
- JavaScript replaceChild()JavaScript
- JavaScript remove()JavaScriptREM
- JavaScript appendChild()JavaScriptAPP
- JavaScript deleteRow()JavaScriptdelete
- JavaScript clientYJavaScriptclient
- JavaScript之thisJavaScript
- JavaScript isFinite()JavaScript
- JavaScript toggle()JavaScript
- JavaScript Boolean()JavaScriptBoolean
- JavaScript escape()JavaScript
- JavaScript parseFloat()JavaScript
- JavaScript unescape()JavaScript
- JavaScript call()JavaScript
- JavaScript bind()JavaScript
- JavaScript previousElementSiblingJavaScript
- JavaScript preventDefault()JavaScript
- JavaScript insertRow()JavaScript
- JavaScript isPrototypeOf()JavaScript