3 回答
TA貢獻1770條經驗 獲得超3個贊
首先,我將解釋之間的差異NodeList和HTMLCollection。
兩個接口是集合 DOM節點。它們在提供的方法和它們可以包含的節點類型方面有所不同。雖然a NodeList可以包含任何節點類型,但是HTMLCollection應該只包含Element節點。
An HTMLCollection提供與a NodeList和另外一種方法相同的方法namedItem。
當必須向多個節點提供訪問時總是使用集合,例如,大多數選擇器方法(例如getElementsByTagName)返回多個節點或獲取對所有子節點的引用(element.childNodes)。
有關更多信息,請查看DOM4規范 - 集合。
document.getElementsByTagName("td")和之間有什么區別$("td")?
getElementsByTagName是DOM接口的方法。它接受標記名稱作為輸入并返回HTMLCollection(參見DOM4規范)。
$("td")大概是jQuery。它接受任何有效的CSS / jQuery選擇器并返回一個jQuery對象。
標準DOM集合和jQuery選擇之間的最大區別在于DOM集合通常是實時的(并非所有方法都返回實時集合),即如果受到影響,對DOM的任何更改都會反映在集合中。它們就像DOM樹上的視圖,而jQuery選擇是調用函數時DOM樹的快照。
為什么console.log還會在它們旁邊顯示DOM元素數組,它們不是對象而不是數組?
jQuery對象是類似于數組的對象,即它們具有數字屬性和length屬性(請記住,數組本身就是對象)。瀏覽器傾向于以特殊方式顯示數組和類似數組的對象,例如[ ... , ... , ... ]。
什么是難以捉摸的“NodeLists”,我如何選擇一個?
請參閱我的答案的第一部分。你不能選擇 NodeList s,它們是選擇的結果。
據我所知,甚至沒有一種以NodeList編程方式創建s 的方法(即創建一個空的并稍后添加節點),它們僅由一些DOM方法/屬性返回。
TA貢獻1942條經驗 獲得超3個贊
0. a和a有什么區別?HTMLCollectionNodeList
以下是一些定義。
DOM Level 1 Spec - 其他對象定義:
接口HTMLCollection
HTMLCollection是節點列表??梢酝ㄟ^序數索引或節點的名稱或id屬性來訪問單個節點。注意:HTML DOM中的集合被假定為實時,這意味著它們會在更改基礎文檔時自動更新。
DOM Level 3 Spec - NodeList
接口NodeList
NodeList接口提供有序節點集合的抽象,而不定義或約束此集合的實現方式。DOM中的NodeList對象是實時的。
NodeList中的項可通過整數索引訪問,從0開始。
因此,它們都可以包含實時數據,這意味著DOM將在其值發生時更新。它們還包含一組不同的功能。
如果您運行腳本,tableDOM元素包含a childNodes NodeList[2]和a,您將注意到是否檢查控制臺children HTMLCollection[1]。他們為什么不同?因為HTMLCollection只能包含元素節點,所以NodeList還包含一個文本節點。
在此輸入圖像描述
1. document.getElementsByTagName("td")和之間有什么區別$("td")?
document.getElementsByTagName("td")返回DOM元件的陣列(一NodeList),$("td")被稱為jQuery對象,其具有從所述元件document.getElementsByTagName("td")上其屬性0,1,2等,主要的區別是,jQuery對象是慢一點來檢索,但可訪問所有的方便jQuery函數。
2. $("#myTable")和$("td")是對象(jQuery對象)。為什么console.log還在它們旁邊顯示DOM元素數組,它們不是對象而不是數組?
他們對自己的屬性的對象0,1,2等設置為DOM元素。這是一個簡單的例子:它是如何工作的:
的jsfiddle
var a = {
1: "first",
2: "second"
}
alert(a[1]);
3.什么是難以捉摸的“NodeLists”,我該如何選擇?
您一直在代碼中檢索它們,getElementsByClassName并getElementsByTagName返回NodeLists
TA貢獻2011條經驗 獲得超2個贊
附加說明
HTMLCollection和NodeList有什么區別?
一的HTMLCollection只包含元素節點(標簽)和節點列表包含了所有的節點。
有四種節點類型:
元素節點
屬性節點
文本節點
評論節點
nodeTypes
元素內的空格被視為文本,文本被視為節點。
考慮以下:
<ul id="myList">
<!-- List items -->
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
<li>List item 4</li>
<li>List item 5</li>
</ul>
空白: <ul id="myList"> <li>List item</li></ul>
沒有空格: <ul id="myList"><li>List item</li></ul>
添加回答
舉報
