使用DOM 時,三種關鍵類型的集合發揮作用:HTMLCollections、節點清單和物件數組。這些集合中的每一個都有特定的用途,並具有其獨特的特徵。
HTMLCollections 表示與特定標籤名稱相符的 HTML 元素的集合。它們由 Document 物件的 getElementsByTagName() 方法傳回。 HTMLCollections 是即時,這意味著它們會自動反映對 DOM 所做的任何更改。它們還提供透過索引對各個元素的直接存取。另一方面,
NodeLists 是任何類型 Node 的集合(包括 HTML 元素、文字節點和註解)。它們由各種 DOM 方法傳回,例如 querySelectorAll() 和 childNodes()。 NodeList 是靜態,這表示除非明確更新,否則它們不會反映 DOM 中的變更。
jQuery 物件與 HTMLCollections 不直接相關或節點清單。 jQuery 物件是封裝 DOM 選擇的 JavaScript 物件。它們提供了一個方便的介面,用於操作 DOM 元素並使用 jQuery 豐富的 API 增強其功能。
jQuery 選擇可以包括元素、文字節點或任何其他類型的 Node。與 NodeList 一樣,jQuery 選擇是靜態的。但是,可以使用 jQuery 的 $(...).live() 方法將它們轉換為即時 HTMLCollections。
除了 HTMLCollections 和 NodeLists,您還可以建立JavaScript 中的物件陣列。例如,您可以將 DOM 元素儲存在陣列中,如下所示:
<code class="javascript">const elements = [document.getElementById("myElement1"), document.getElementById("myElement2")];</code>
JavaScript 中的陣列是動態的,不會反映對 DOM 所做的變更。它們也不提供對 HTMLCollections 或 jQuery 物件等特定方法的存取。
以下腳本示範了這些集合類型之間的主要區別:
<code class="javascript">$(function(){ 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"}); console.log('Node=',Node); console.log('document.links=',document.links); console.log('document.getElementById("myTable")=',document.getElementById("myTable")); console.log('document.getElementsByClassName("myRow")=',document.getElementsByClassName("myRow")) console.log('document.getElementsByTagName("td")=',document.getElementsByTagName("td")); console.log('$("#myTable")=',$("#myTable")); console.log('$("td")=',$("td")); });</code>
此腳本記錄以下輸出:
[123,"abc",321,"cba"]=[123, "abc", 321, "cba"] {123:123,abc:"abc",321:321,cba:"cba"}=Object { 123=123, abc="abc", 321=321, more...} Node= undefined document.links= HTMLCollection[a #, a #] document.getElementById("myTable")= <table> document.getElementsByClassName("myRow")= HTMLCollection[tr.myRow, tr.myRow] document.getElementsByTagName("td")= HTMLCollection[td, td, td, td] jQuery("#myTable")= [table#myTable] jQuery("td")= [td, td, td, td]
以上是以下是一些符合您文章內容的英文問答類問題標題: 更簡潔的標題: * What\'s the Difference Between HTMLCollections, NodeLists, and Arrays of Objects in the DOM? * DOM Collections: HTMLCollections, NodeLists, and Arrays - What\'s t的詳細內容。更多資訊請關注PHP中文網其他相關文章!