爲什麼不getElementsByName
,getElementsByTagName
和getElementsByClassName
返回HTMLCollection
(W3C,MDN),而不是NodeList
(W3C,MDN)?爲什麼document.getElementsBy__方法不返回一個HTMLCollection?
所有這三個回報只有元素的活節點列表:
document.getElementsByName('nameAttrVal');
document.getElementsByTagName('div');
document.getElementsByClassName('space separated classes');
的NodeLists是偉大的,但HTMLCollection
s爲更具體,因爲它們只能包含HTML元素。看起來這對於這些方法來說是完美的。
創建集合時,篩選器和根與 集合相關聯。
例如,創建document.images 屬性的HTMLCollection對象時,它將與僅選擇 img元素的過濾器相關聯,並且該根過濾器位於文檔的根目錄。
然後收集表示活視圖在 集合的根爲根的子樹的,只包含符合給定 過濾器節點。該視圖是線性的。在沒有對 的具體要求的情況下,相反,集合內的節點必須按樹 的順序進行排序。
一對夫婦地方HTMLCollection
已被使用:
document.images
element.children
NB:querySelectorAll
返回非現場NodeList
。
那麼'qSA'是在這三個API之後幾年定義的,所以我認爲規格設計師同意你的看法。但你現在不能回去改變事情。 –
潛在的重複問題 - [LINK](http:// stackoverflow。com/questions/15763358/difference-between-htmlcollection-nodelists-and-arrays-of-objects) – Quinn
@Quinn,我不確定它是否完全相同,但確實相關。 – zzzzBov