如何在javascript中循环遍历未知数量的子对象和子对象的子对象
我正在尝试循环浏览html,看起来像这样如何在javascript中循环遍历未知数量的子对象和子对象的子对象,javascript,Javascript,我正在尝试循环浏览html,看起来像这样 <div> <span> ... </span> <span> ... </span> <span> ... </span> <span> ...
<div>
<span>
...
</span>
<span>
...
</span>
<span>
...
</span>
<span>
...
</span>
<div>
<header>
...
</header>
<div>
...
</div>
<div>
...
</div>
...
</div>
<div>
<header>
...
</header>
<div>
...
</div>
<div>
...
</div>
...
</div>
<div>
<header>
...
</header>
<div>
...
</div>
<div>
...
</div>
...
</div>
...
</div>
这只是记录4,1,然后4,2,然后4,3等等…这是一个非常简单的递归“算法”示例,用于获取给定DOM节点的所有后代
const findAllChildren=(根)=>
root.children.length>0
? [root,[…root.children].flatMap(findAllChildren)].flat()
:根;
console.log(
findAllChildren(文档正文)
);代码>
你好
你好
世界
你好
世界
你好
世界
可能使用递归函数。到目前为止你试过什么?你能分享一下吗?实际的问题是什么?对于每个元素,检查是否有任何。子元素。如果是这样,请迭代它们并检查.nodeName
,或.queryselectoral()
,或…这些元素中的“数据”是什么?您只是在尝试检索字符串还是整个元素?我正在尝试检索整个元素如果一个div包含一个头怎么办?您返回的div中有标题吗?还是只想让元素位于祖先树的底部?@PeterSeliger道歉。这种方法只是为了演示一个朴素的递归函数,OP可以对其进行编辑以适应其需求。你说得对。我错过了你的这一点,因为我只关注代码,而不是提供的文本。@PeterSeliger没问题。我将添加另一个例子,希望更接近OP想要什么,但这需要更长的时间——我仍然不太理解OP想要什么
let i = 4
while(driver.findElement(By.xpath(`//*[@id="football"]/div/div/div/div[${i}]`))){
let j = 1
while(driver.findElement(By.xpath(`//*[@id="football"]/div/div/div/div[${i}]/div/div/div[${j}]`))){
console.log(i, j)
j++
}
i++
}