Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何循环通过htmlcollection对象?_Javascript_Html_Dom_Htmlcollection - Fatal编程技术网

Javascript 如何循环通过htmlcollection对象?

Javascript 如何循环通过htmlcollection对象?,javascript,html,dom,htmlcollection,Javascript,Html,Dom,Htmlcollection,我已经看了几乎所有关于htmlcollection的问题 所以我有一个div,我用ajax获取数据并在这个div中创建div,这样它们就不会硬编码了 这就是我获取数据之前div的样子 <div id="tivvits"></div> 试试这个 我使用spread操作符允许在HTMLCollection上使用map window.addEventListenerload,函数{ const gridContainers=document.qu

我已经看了几乎所有关于htmlcollection的问题

所以我有一个div,我用ajax获取数据并在这个div中创建div,这样它们就不会硬编码了

这就是我获取数据之前div的样子

    <div id="tivvits"></div>
试试这个

我使用spread操作符允许在HTMLCollection上使用map

window.addEventListenerload,函数{ const gridContainers=document.queryselectoralltivits.grid container; 常量id=[…gridContainers].mapdiv=>div.id; console.logids }; ... ... 试试这个

我使用spread操作符允许在HTMLCollection上使用map

window.addEventListenerload,函数{ const gridContainers=document.queryselectoralltivits.grid container; 常量id=[…gridContainers].mapdiv=>div.id; console.logids }; ... ...
不太清楚,但你在找这样的东西吗

targets = document.querySelectorAll('#tivvits > .grid-container')
for (let target of targets)
  {console.log(target.id)}

这应该选择所有节点,这些节点是节点的直接子节点,并且具有值网格容器的class属性,并从中提取id属性的属性值。

这不是很清楚,但是您是否正在寻找类似的内容

targets = document.querySelectorAll('#tivvits > .grid-container')
for (let target of targets)
  {console.log(target.id)}

这应该选择所有节点,这些节点是节点的直接子节点,并且具有值网格容器的class属性,并从中提取id属性的属性值。

为什么按id和也按class?这根本没有意义,只需使用let links=document.querySelectorAll.grid-container;links.forEachlink=>{console.loglink}@Alex我一直在想,因为他们是divtivits的孩子,所以我才这么做。所以你建议我可以做document.getElementsByClassName'grid-container'对吗?在我看来,你应该制作一个tivvits对象,它有get、render、show方法,然后将值/组件存储在一个数组中,你可以在渲染之前检查它,您试图在一个或两个函数中完成太多的工作,我想说的是使用类似pthohtep提到的document.queryselectoral会做得很好,为什么会使用id和class?这根本没有意义,只需使用let links=document.querySelectorAll.grid-container;links.forEachlink=>{console.loglink}@Alex我一直在想,因为他们是divtivits的孩子,所以我才这么做。所以你建议我可以做document.getElementsByClassName'grid-container'对吗?在我看来,你应该制作一个tivvits对象,它有get、render、show方法,然后将值/组件存储在一个数组中,你可以在渲染之前检查它,你试图在一个或两个函数中做的太多了,我想说的是使用类似于pthohtep提到的document.queryselector的东西会做得很好,hob我试过你的答案,我对divtivvit-19和divtivvit-20进行了硬编码,但由于它们实际上不是硬编码的,所以document无法看到它们。你会在哪里对它们进行硬编码为什么?最初为空,然后在加载事件侦听器中调用show_all_tivvits函数,该函数发出ajax请求,并创建divtivvit-19、divtivvit-20,请用你真正想做的事情更新你的问题,因为我认为你让事情变得太难了,但这实际上是我想做的,我已经尝试了你的答案,我硬编码了divtivvit-19和divtivvit-20,效果很好,但因为它们实际上没有硬编码,所以文档无法看到他们。你会在哪里硬编码,为什么?最初为空,然后在加载事件侦听器中调用show_all_tivvits函数,该函数发出ajax请求,并创建divtivvit-19、divtivvit-20,请用你真正想做的事情来更新你的问题,因为我认为你让事情变得太难了,但这正是我真正想做的tho@AhmetK很高兴它对你有用@艾哈迈特很高兴这对你有用!
Array.from(links)

Array.prototype.slice.call(links)

[].forEach.call(links, function (el) {...});

HTMLCollection.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];

HTMLCollection.prototype.forEach = Array.prototype.forEach;
targets = document.querySelectorAll('#tivvits > .grid-container')
for (let target of targets)
  {console.log(target.id)}