简体   繁体   English

javascript从各个层面获取dom元素子级

[英]javascript get dom element children from all depths

I have an HTML code like this: 我有这样的HTML代码:

<div id="test">
    <div id="test1">
        <div id="test2">
            test
        </div>
    </div>
</div>

I want to take all children of the element "test", so I made a recursive function: 我想获取元素“ test”的所有子元素,因此我做了一个递归函数:

function getObjectChildren(elem) {
    var elemChildren = elem.childNodes;
    var result = [];
    result.push.apply(elemChildren);
    for (k = 0; k < elemChildren.length; k++) {
        if (elemChildren[k].childNodes.length > 0) {
            result.push.apply(getObjectChildren(elemChildren[k]));
        }
    }
    return result;
}

var a = getObjectChildren(document.getElementById("test");

The thing is, this recursive function enters an infinite loop. 事实是,此递归函数进入无限循环。 Does anyone know why this happens and how can I solve this problem? 有谁知道为什么会这样,我该如何解决呢?

I fixed my problem: 我解决了我的问题:

function getObjectChildren(elem) {
    var elemChildren = elem.childNodes;
    var result = [];
    for (var k = 0; k < elemChildren.length; k++) {
        result.push(elemChildren[k]);
        if (elemChildren[k].childNodes.length > 0) {
            var tmp = getObjectChildren(elemChildren[k]);
            for (var i = 0; i < tmp.length; i++) {
                result.push(tmp[i]);
            }
        }
    }
    return result;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM