JavaScript >> Javascript 文檔 >  >> JavaScript

JavaScript 中的 HTMLCollection 簡介

一個HTMLCollection 是一個類似數組的對象,表示從文檔中提取的 HTML 元素的集合。它總是實時有序 ,這意味著對 DOM 的修改會自動應用於集合元素。

在本文中,我們將了解 HTMLCollection 詳細介紹它是什麼以及如何在 JavaScript 中使用它。我們還將簡要介紹 HTMLCollection 之間的區別 和一個 NodeList,它是另一個類似於 HTMLCollection 的對象 .

創建一個 HTMLCollection

getElementsByTagName() 返回一個 HTMLCollection 目的。以下示例選擇 all <p> 文檔中的元素:

const elems = document.getElementsByTagName('p');

集合中的元素可以通過數字索引、名稱或 ID 訪問。訪問第三個 <p> 在集合中,你可以寫:

const p = document.getElementsByTagName('p')[2];

要按名稱或 ID 訪問元素,HTMLCollection 提供 namedItem() 方法。以下示例獲取 <p> ID 為 notify 的標籤 來自收藏:

const elems = document.getElementsByTagName('p');

// select <p> with ID `notify`
const p = elems.namedItem('notify');

HTMLCollection的長度

就像 NodeList , HTMLCollection 還支持length 返回集合內元素總數的屬性:

const elems = document.getElementsByTagName('p');

// print total elements
console.log(elems.length);

length 當你想遍歷集合中的 HTML 元素時,屬性非常有用:

const elems = document.getElementsByTagName('p');

// loop all collection elements
for (let i = 0; i < elems.length; i++) {
    elems[i].style.color = 'red';    
}

迭代 HTMLCollection

除了我們上面討論的簡單 for 循環之外,for...of 語句還可以用於迭代 HTMLCollection

const elems = document.getElementsByTagName('p');

// iterate using for...of loop
for (const p of elems) {
    console.log(p.innerText);
}

不同於 NodeList , HTMLCollection 不支持 forEach() 方法。但是,您可以使用 Array.from() 轉換HTMLCollection的方法 到一個普通數組,然後使用 forEach() 對其進行迭代:

const elems = document.getElementsByTagName('p');

// itereate using forEach()
Array.from(elems).forEach((p, index) => {
    console.log(p.innerText);
});

查看本指南,了解更多關於迭代 DOM 元素的不同方法。

HTMLCollection 與數組

一個 HTMLCollection 對象可能看起來像一個數組,但它不是一個數組。兩者都是完全不同的東西。就像數組一樣,您可以遍歷集合併通過索引號引用其元素。

但是,您不能使用 push() 等常見的數組方法 , pop() , join() , 和 valueOf()HTMLCollecton 上 .

HTMLCollectionNodeList

兩者都是 HTMLCollectionNodeList 是 DOM 元素的集合。唯一的區別 在於它們提供的方法,也在於它們可以存儲的節點類型。

HTMLCollection 只能 包含 HTML 元素,而 NodeList 可以包含任何內容,HTML 元素、註釋、屬性、文本等。

一個 HTMLCollection 提供與 NodeList 相同的方法 還有一個名為 nameItem() 的方法 按名稱或 ID 訪問集合元素。 NodeList 元素只能通過數字索引訪問。

NodeListHTMLCollection 不是 數組,所以你不能使用像 push() 這樣的數組方法 , pop() , join() , 和 valueOf() 對他們倆來說。

總結

在本文中,我們了解了 HTMLCollection 對象,以及如何在 JavaScript 中使用它。簡而言之:

  • 一個HTMLCollection 是一個類似數組的 HTML 元素集合 .
  • 一個HTMLCollection 總是活著 ,這意味著您可以修改集合元素,這些更改將自動應用。
  • document.getElementsByTagName() 方法可用於提取 HTMLCollection 來自 DOM。
  • length 屬性返回 HTMLCollection 內的元素總數 對象。
  • 您可以使用簡單的 for 循環(適用於舊瀏覽器)或 for...of 語句來遍歷集合元素。
  • 一個HTMLCollection不是 一個數組,所以不能在上面使用常用的數組方法。
  • 一個HTMLCollection 類似於 NodeList,但只存儲 HTML 元素,並提供了一種按名稱或 ID 訪問元素的附加方法。

Tutorial JavaScript 教程
  1. React,如何使用 useState() 方法

  2. 在 Firebase 登錄時重新渲染標題

  3. 為什麼 2 ==[2] 在 JavaScript 中?

  4. Vuex 用於舞台管理 Nativescript-vue

  5. 如何將 FCM(Firebase 雲消息傳遞)添加到 VueJS

  6. Habitica-Chat-Extension (FireFox) 上未批准的修復版本

  7. 5 個 jQuery 圖像轉換插件

  1. 在 .NET 中為組合設計擴展方法

  2. 類型錯誤:data.forEach 不是函數

  3. Next.js 環境變量和運行時配置

  4. 5 個自定義 KendoReact 調度程序組件的內置視圖

  5. 在靜態掃描中發現誤報:不安全的隨機性

  6. JavaScript 和正則表達式:如何檢查字符串是否僅為 ASCII?

  7. Prisma (v2) 中的級聯刪除

  1. 如何提高網絡性能🤘🤘🚩🔜

  2. 使用 React 和 D3 創建力圖

  3. 使用 TailwindCSS 創建儀表板 - 添加 Storyblok

  4. 理解 NodeJs 中的事件循環阻塞並排除故障 [第 1 部分]