有没有更有效的方法将HTMLCollection转换为数组,除了迭代所述集合的内容并手动将每个项目推入数组?
我想迭代的结果
document.getElementsByTagName("...");
Run Code Online (Sandbox Code Playgroud)
它返回一个HTMLCollection,而不是一个数组。所以我不能简单地使用forEach. 以下是可能的,但看起来不太好:
let elements = document.getElementsByTagName("...");
for (var i = 0, m = elements.length; i < m; i++) {
let element = elements[i];
}
Run Code Online (Sandbox Code Playgroud)
对于 javascript,存在几乎完全相同的问题: HTMLCollection 元素的 For 循环
显然,随着最新的更新,现代浏览器支持:
var list = document.getElementsByClassName("events");
for (let item of list) {
log(item.id);
}
Run Code Online (Sandbox Code Playgroud)
但是打字稿编译器抱怨:
error TS2495: Type 'NodeListOf<HTMLParagraphElement>' is not an array type or a string type.
Run Code Online (Sandbox Code Playgroud)
尽管如此,它仍然可以转换为正确的 Javascript。它甚至知道我在这里做什么,而不仅仅是复制源代码。编译后的输出是这样的:
var elements = main_div.getElementsByTagName("p");
for (var _i = 0, elements_1 = elements; _i …Run Code Online (Sandbox Code Playgroud)