得到childnode的孩子,直到没有孩子

时间:2015-08-24 19:21:53

标签: javascript html children domparser

我正在使用DOMParser()来解析HTML字符串,并尝试使用for循环获取所有子节点。但是,我不知道如何获取子节点的节点及其子节点等......

var str = "<div><p>paragraph<span>span</span></p></div>";
var doc = new DOMParser().parseFromString(str, 'text/html');
var childnodes = doc.body.childNodes;

for (var i = 0; i < childnodes.length; i++) {
    console.log(childnodes[i]);
    console.log(childnodes[i].childNodes);
    console.log(childnodes[i].childNodes[i].childNodes);
}

这可以按照我的意愿运行,它会提供divptextspan,但是如何使用for循环来完成此工作让所有的孙子孙女?没有jQuery?

Here's a fiddle上面的代码。

1 个答案:

答案 0 :(得分:3)

你应该使用递归:

function travelChildren(childnodes){

    for (var i = 0; i < childnodes.length; i++) { // for each node in childnodes
        console.log(childnodes[i]); // console log current node
        travelChildren(childnodes[i].childNodes) // and travel its children
    }

}

travelChildren(childnodes) // start recursion with the child nodes you want