如何使用JavaScript計算特定元素的所有子元素?


子節點

在文件樹或DOM(文件物件模型)樹中,直接巢狀在另一個節點內部的節點稱為JavaScript中的子節點。

在處理HTML文件時,子節點包括特定HTML元素中的HTML元素、文字節點和註釋節點,這些節點巢狀在其他HTML元素內部。

方法一:使用childNodes屬性

使用childNodes屬性是計算子元件的一種方法。此屬性返回所有子節點(包括文字節點和註釋)的NodeList。我們可以遍歷NodeList並檢查每個節點的nodeType屬性,以僅列舉元素節點。

演算法

  • 開始

  • 使用querySelector方法選擇父元素,並將其賦值給變數'parent'。

  • 初始化一個值為0的變數'count'。

  • 使用forEach方法遍歷父元素的每個子節點,並傳遞一個以'node'作為引數的回撥函式。

  • a. 使用nodeType屬性並將其與Node.ELEMENT_NODE進行比較,檢查節點是否為元素節點。

  • b. 如果節點是元素節點,則將count變數加1。

  • 遍歷所有子節點後,將count變數輸出到控制檯。

  • 結束。

示例

<div id="parent">
  <p>Child 1</p>
  <p>Child 2</p>
  <span>Child 3</span>
  Some text
</div>

const parent = document.querySelector('#parent');
let count = 0;

parent.childNodes.forEach(node => {
  if (node.nodeType === Node.ELEMENT_NODE) {
    count++;
  }
});

console.log(count);

在此程式碼中,我們首先使用querySelector選擇父元素。接下來,我們將count變數的初始值設定為0。使用forEach函式,我們遍歷childNodes NodeList,為每個元素節點增加count變數。

方法二:使用children屬性

使用children屬性是列舉子元素的另一種方法。此屬性提供的HTMLCollection只包含作為父元素直接子元素的元素節點。要獲得總數,我們只需要使用此集合的length屬性。

演算法

  • 開始

  • 使用querySelector方法選擇父元素,並將其賦值給變數'parent'。

  • 使用children屬性獲取父元素的子元素數量,並將其賦值給變數'count'。

  • 將count變數輸出到控制檯。

  • 結束。

示例

<div id="parent">
  <p>Child 1</p>
  <p>Child 2</p>
  <span>Child 3</span>
  Some text
</div>

const parent = document.querySelector('#parent');
const count = parent.children.length;

console.log(count);

在此程式碼中,我們首先使用querySelector選擇父元素,然後使用children集合的length屬性。

方法三:使用querySelectorAll

最後,我們可以使用querySelectorAll方法列舉子元素。此方法返回與給定選擇器匹配的所有元素的NodeList。可以使用子選擇器(>)僅選擇直接子元素。

演算法

  • 開始

  • 使用querySelector方法選擇父元素,並將其賦值給變數'parent'。

  • 使用選擇器'> *'和querySelectorAll方法選擇父元素的所有子元素,並將它們賦值給變數'elements'。

  • 獲取elements變數中子元素的數量,並將其賦值給變數'count'。

  • 將count變數輸出到控制檯。

  • 結束。

示例

<div id="parent">
  <p>Child 1</p>
  <p>Child 2</p>
  <span>Child 3</span>
  Some text
</div>

const parent = document.querySelector('#parent');
const count = parent.querySelectorAll('> *').length;

console.log(count);

在此程式碼中,我們首先使用querySelector選擇父元素,然後使用querySelectorAll和子選擇器(>)選擇該元素的所有直接子元素。然後獲取結果NodeList的length屬性。

結論

JavaScript提供了多種計算子元件的方法,每種方法都有其獨特的優點和缺點。childNodes方法是最靈活的方法,它可以計算任何型別的子節點,但需要更多程式設計才能排除非元素節點。children方法只包含直接子元素,但它是最直接的方法。querySelectorAll方法也很直接,可以用來選擇任何級別的子元素,但需要了解CSS選擇器。

更新於:2023年8月18日

2K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告