Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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中循环遍历未知数量的子对象和子对象的子对象_Javascript - Fatal编程技术网

如何在javascript中循环遍历未知数量的子对象和子对象的子对象

如何在javascript中循环遍历未知数量的子对象和子对象的子对象,javascript,Javascript,我正在尝试循环浏览html,看起来像这样 <div> <span> ... </span> <span> ... </span> <span> ... </span> <span> ...

我正在尝试循环浏览html,看起来像这样

    <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++
}