为什么getElementsByName
,getElementsByTagName
和getElementsByClassName
不返回HTMLCollection
(W3C,MDN)而不是NodeList
(W3C,MDN)?
所有这三个都返回仅包含元素的实时NodeList:
document.getElementsByName('nameAttrVal');
document.getElementsByTagName('div');
document.getElementsByClassName('space separated classes');
NodeList很棒,但是
HTMLCollection
更加具体,因为它们只能包含HTML元素。看来这对于那些方法来说是完美的。HTMLCollection
的几个地方已经被使用:document.images
element.children
注意:
querySelectorAll
返回无效的NodeList
。 最佳答案
HTMLCollection在很大程度上仅包含在DOM规范中,以记录大多数浏览器在DOM引入之前的工作方式。它仅在HTML上下文中才有意义,而DOM被构建为可同时用于HTML和XML。 DOM的实现被允许省略HTMLCollection及其所有用法,并且仍然被认为是符合标准的。浏览器已选择保留它以保持与旧网站的向后兼容性。
关于javascript - 为什么document.getElementsBy__方法不返回HTMLCollection?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22183971/