首頁 >web前端 >js教程 >HTMLCollections、NodeLists 和物件陣列在 DOM 操作中有何不同?

HTMLCollections、NodeLists 和物件陣列在 DOM 操作中有何不同?

Susan Sarandon
Susan Sarandon原創
2024-10-29 01:51:02829瀏覽

How do HTMLCollections, NodeLists, and Object Arrays Differ in DOM Manipulation?

區分DOM 中的HTMLCollection、NodeList 和物件陣列

開發者在存取DOM 節點時,經常會遇到HTMLCollection、NodeList 和物件數組。了解這些資料結構之間的差異對於有效操作文件結構至關重要。

HTMLCollections 與NodeLists

HTMLCollections 和NodeLists 與節點集合有相似之處,但它們有獨特的特徵:

  • 內容:
  • HTMLCollections 僅包含Element 節點,而NodeList 可以容納任何類型的節點。
  • 方法:
  • 除了所有集合通用的方法之外,HTMLCollections 還提供namedItem 方法來按名稱存取元素。

實時集合與快照集合

DOM 集合可以是實時或快照:
  • 實時:
  • 當對DOM 進行更改時,集合會自動更新。
  • 快照:
  • 集合保持固定,無論 DOM 修改如何。

瀏覽器方法(例如 getElementsByTagName)傳回的 DOM 集合通常是即時的,而 jQuery 選擇是快照。

陣列與物件陣列

雖然jQuery 物件在控制台日誌中顯示為陣列,但它們實際上是物件陣列:
  • 陣列:
  • 使用數字索引存取的順序集合。
  • 物件陣列:
  • 使用數字和命名屬性存取元素的陣列。

選擇節點

使用文件方法:

  • document.. :傳回所有td 元素的HTMLCollection。
  • document.getElementsByClassName("myRow"):傳回具有「myRow」類別的所有元素的 NodeList。

使用 jQuery:

  • $("td"):選擇所有 td 元素並傳回一個 jQuery 對象,一個物件陣列。

範例腳本

提供的腳本示範了資料結構之間的差異:
  • console.log('[123,"abc",321,"cba"]=[123,"abc",321,"cba"]: 比較陣列。
  • console. log('{123:123,abc:"abc",321:321,cba:"cba"}={123:123,abc:"abc",321:321,cba:"cba"}:比較物件陣列使用物件語法。 =',document.links): 記錄連結的HTMLCollection。而不是集合。
  • console.log('document.getElementsByTagName("td")=',document.getElementsByTagName("td")):記錄所有td 元素的HTMLCollection。
  • console.log( '$(" #myTable")=',$("#myTable")): 記錄代表#myTable 元素的jQuery 物件。
  • console.log('$("td")=', $("td" )):記錄包含所有td 元素的jQuery 物件陣列。

以上是HTMLCollections、NodeLists 和物件陣列在 DOM 操作中有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn