一文瞭解JavaScript用Element Traversal新屬性遍歷子元素
之前遍歷子元素可以用childNodes
屬性或者firstChild
進行遍歷,但是要判斷子元素是否是ELement
元素。
後來W3C
通過Element Traversal
規定定義瞭一組新的屬性來進行遍歷,就不用判斷瞭,非常方便。
1、childNodes屬性遍歷
遍歷子元素通常是通過childNodes
屬性進行遍歷,但是這個屬性會包含空白節點,如果隻是要遍歷Element
元素就特別不方便。
請看如下代碼示例:
<div class="article"> <p>段落一</p> <p>段落二</p> <p>段落三</p> </div> <script type="text/javascript"> let childList = document.querySelector(".article").childNodes; console.log(childList); // 控制臺輸出: // NodeList(7) 1 </script>
控制臺查看效果:
遍歷子元素空白節點:
獲取到的子元素包含瞭空白的text
節點,這些節點就是一些換行、縮進、空格等。
如果要遍歷 childList
中p元素,實務中也經常是這樣,
那麼需要判斷子元素為Element類型:
let childList = document.querySelector(".article").childNodes; // 遍歷子元素 childList.forEach((item, index) => { if (item.nodeType == 1) { // 判斷是Element類型 console.log(item); } }); // 控制臺輸出: // 3個p元素
2、Element系列屬性遍歷
Element Traversal為DOM元素添加瞭5個屬性:
- 1.
childElementCount
子元素的個數(nodeType=1
)。 - 2.
firstElementChilde
指向第一個Element
類型的子元素。 - 3.
lastElementChilde
指向最後一個Element
類型的子元素。 - 4.
previousElementSibling
指向上一個同胞Element
類型的元素。 - 5.
nextElementSibling
指向下一個同胞Element
類型的元素。
通過這些新屬性,遍歷Element
元素起來就方便多瞭,
還是以上面為例:
// 獲取第一個元素 let currentElement = document.querySelector(".article").firstElementChild; // 遍歷子元素 while (currentElement) { console.log(currentElement); // 獲取下一個元素 currentElement = currentElement.nextElementSibling; }
這樣處理起來就更加簡潔瞭。
目前IE9及以上版本,以及所有現代瀏覽器都支持這些屬性。
到此這篇關於一文瞭解JavaScript
用Element Traversal
新屬性遍歷子元素的文章就介紹到這瞭,更多相關 淺談JavaScript
用Element Traversal
新屬性遍歷子元素內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- JS中 querySelector 與 getElementById 方法區別
- vue解析指令compile源碼層面使用解析
- Manipulation-TypeScript DOM操作示例解析
- 詳解JavaScript高級正則表達式
- JavaScript頁面回流與重繪