为什么getElementsByNamegetElementsByTagNamegetElementsByClassName不返回HTMLCollection(W3CMDN)而不是NodeList(W3CMDN)?

所有这三个都返回仅包含元素的实时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/

10-11 14:27