获取innerText的javascript递归

获取innerText的javascript递归,javascript,Javascript,我想学习没有选择器的递归,我有div: <div> <div> <div>car</div> </div> <div> <div>bus</div> </div> <div> <div>train</div> </div> 汽车 公共汽车 火车 如何在没有选择器(标记名..等)的情况下遍历DOM,以便提

我想学习没有选择器的递归,我有div:

<div>
 <div>
     <div>car</div>
 </div>
 <div>
     <div>bus</div>
</div>
<div>
    <div>train</div>
</div>

汽车
公共汽车
火车
如何在没有选择器(标记名..等)的情况下遍历DOM,以便提取这3个div的内部文本,以便将它们推入数组中。注意,我需要选择没有任何子元素的div

我使用document.body.childNodes以及之后的许多if语句来检查是否存在childNodes。 我做了,但代码很长。 我看到它可以通过递归函数来完成,所以任何帮助都是惊人的


谢谢大家!

好吧,你想要实现的目标可以很容易地用一行代码来完成
rootElement.innerText.split('\n')

我知道你想要的是一个递归函数,但有时候更简单的答案是更好的

如果您想开始了解递归函数,这里有一个基本的
factorial
算法

    function factorial(number) {
        if (number === 0) return 1;
        return number * factorial(number - 1);
    }
    console.log(factorial(5));
const root=document.getElementById('root');
const myList=root.innerText.split('\n');
console.log(myList)

汽车
公共汽车
自行车
出租车
地铁
火车

以下是一个让您开始学习的示例:

函数getText(节点、累加器){ if(node.nodeType==3)//3==text节点 累加器.推(节点.节点值) 其他的 for(让节点的子节点。childNodes) getText(子级、累加器) } // 所有文本=[] getText(document.querySelector('#start'),alltext) console.log(所有文本)

汽车
公共汽车
火车

您可以使用
Element.children
来获取子元素,对它们进行迭代,然后递归到它们中。我尝试过,但当我尝试获取只有子元素的元素时,问题就开始了。显示您尝试过的内容,以便我们可以帮助您了解您做错了什么。为什么只有子元素的元素会出现问题?您迭代子对象并递归到它们中。@Barmar因为我只想使用没有子对象的div。我只想使用这些具有innerText的div。这让我很困惑。如何在没有选择器的情况下获得字符串结果。我正在尝试一些挑战,今天是我学习递归的第一天。我想理解困难的部分。但是谢谢你的回答!如果它都在HTML的一行上,所以没有换行符呢?@Barmar该算法仍然有效,因为string.split()将返回一个长度为1的数组,但它应该是每个DIV的单独结果。亲爱的,是的,我做了阶乘示例,但与element.children和element.childrends节点混淆了。我在他们之间循环,我现在得到了结果,我只需要找出简单的方法。非常感谢。非常感谢你!