在javascript中获取节点的所有子节点

在javascript中获取节点的所有子节点,javascript,children,textnode,Javascript,Children,Textnode,我想得到的所有子项 HTML: 节点列表是当前元素的子节点对象的有序集合。如果元素没有子元素,则不包含节点 JavaScript: var childrens = []; function getchilds(node){ if(node.nodeType == 1){ var childnodes = node.childNodes; for(i=0; i<childnodes.length; i++){ v

我想得到
的所有子项

HTML:

节点列表是当前元素的子节点对象的有序集合。如果元素没有子元素,则不包含节点

JavaScript:

var childrens = [];

function getchilds(node){       

    if(node.nodeType == 1){
    var childnodes = node.childNodes;

        for(i=0; i<childnodes.length; i++){

            var child = childnodes[i];
            if(child.nodeType == 1)
            getchilds(child);

       }
    }else
    childrens.push(node);
}

var childnodes = document.getElementById('p').childNodes;       
for(i=0; i<childnodes.length; i++){

    getchilds(childnodes[i]);

}
var childrens=[];
函数getchilds(节点){
if(node.nodeType==1){
var childnodes=node.childnodes;

for(i=0;i看起来您正在对循环使用全局变量
i
,这意味着您在从内部函数调用返回时将丢失元素。将其更改为

for(var i=0; i<childnodes.length; i++){
(变量i=0;i)的

for(var i=0; i<childnodes.length; i++){