【发布时间】:2018-10-02 00:38:47
【问题描述】:
我的 HTML 中有一些元素的类为 node-item,我在组件中使用以下方法访问它们:
let nodeItems = document.getElementsByClassName('node-item');
当我登录 nodeItems 时,它会给我一个长度为 4 的 HTMLCollection[]。
我尝试了很多方法,但仍然无法在 nodeItems 上迭代:
1-第一次尝试:
let bar = [].slice.call(nodeItems);
for (var g of bar){
console.log(g); //gives me nothing
}
2- 秒尝试:
for(let c of <any>nodeItems) {
console.log(c); //gives me nothing
}
我尝试了数组迭代和对象迭代,但仍然是undefined 或error。也试过了:
let nodeItems = document.querySelector(selectors);
但同样的问题。
【问题讨论】:
-
这两种方法都应该有效(尽管
Array.from()会比[].slice.call()更干净)。您确定该集合确实包含这些元素吗?请记住,它是一个 live 节点列表。请做console.log(nodeItems.length)。 -
您的代码在控制台中运行时正在运行,您有更多示例吗?
-
@Bergi @romuleald 我记录了
nodeItems,它给了我一个完整的 HTMLCollection,但是当记录长度时它给了我 0。 -
那么你的实际问题只是当你尝试迭代它时集合是空的,并且它只是在以后才被填充(当DOM元素被加载时)。
-
@Bergi 这不是列出的问题的重复,因为该问题特定于 TS。不过,我很确定某处存在规范的 TS 问题。
标签: javascript angular typescript htmlcollection