Mar*_*zzo 4 javascript dom selector typescript
getElementsByClassName当我调用两个不同的元素时,我很难理解结果的差异:
考虑以下代码:
let section:HTMLElement = document.getElementById("mainSection");
// This returns NodeListOf<Element>
let blah1 = section.getElementsByClassName("blah");
// This returns HTMLCollectionOf<Element>
let blah2 = document.getElementsByClassName("blah");
Run Code Online (Sandbox Code Playgroud)
为什么当我在 on 上调用该方法时,section我得到一个NodeList,但是当我在 document 上调用它时,我得到一个HTMLCollection?
根据MDN 文档,它们不应该都返回一个 吗HTMLCollection?
javascriptdocument对象仅包含有效的 HTML 元素,这是标准的保证。
但是,HTML 元素(您的selection)可以包含其他 HTML 元素或不是有效 html 的节点(想想纯文本,它是一个节点,但不能(合法)单独存在于 Javascript 文档中)。
NodeList 和 HTMLCollection 几乎完全相同,但是使用传统的面向对象语言,HTMLCollection 扩展了 NodeList,也就是说,它可以做 NodeList 能做的一切,而且它还有方法namedItem。