相关疑难解决方法(0)

将HTMLCollection转换为数组的最有效方法

有没有更有效的方法将HTMLCollection转换为数组,除了迭代所述集合的内容并手动将每个项目推入数组?

javascript arrays object

343
推荐指数
7
解决办法
19万
查看次数

用于循环 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)

typescript

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

arrays ×1

javascript ×1

object ×1

typescript ×1