Почему бы не getElementsByName
, getElementsByTagName
и getElementsByClassName
вернуть HTMLCollection
(W3C, MDN) вместо NodeList
(W3C, MDN)?
Все три возвращают живой NodeList только элементов:
document.getElementsByName('nameAttrVal');
document.getElementsByTagName('div');
document.getElementsByClassName('space separated classes');
NodeLists велики, но HTMLCollection
более конкретны, поскольку они могут содержать только HTML-элементы. Похоже, это было бы идеально для этих методов.
Когда создается коллекция, фильтр и корень связаны с коллекции.
Например, когда объект HTMLCollection для document.images создается атрибут, он связан с фильтром, который выбирает только img и внедрены в корень документа.
Затем коллекция представляет собой представление live поддерева, внедренного в корень коллекции, содержащий только узлы, которые соответствуют данному фильтр. Вид является линейным. В отсутствие конкретных требований к напротив, узлы внутри коллекции должны быть отсортированы в дереве порядок.
Пара мест HTMLCollection
уже используется:
document.images
element.children
NB: querySelectorAll
возвращает неживой NodeList
.