var blanks=[];
function getChild(parent){
console.log(blanks.join('')+
(parent.nodeType!=3?
parent.nodeName:parent.nodeValue)
);
if(parent.childNodes.length>0){
blanks.push("\t");//每次有子元素就加tab
for(var i=0,len=parent.childNodes.length;i<len;i++){//先深度遍历
var child=parent.childNodes[i];
getChild(child);
}
blanks.pop();//遍历一层后弹出tab
}
}
getChild(document);
经常用来遍历不确定层级深度的树形结构,如网页元素,网盘文件夹,多级管理结构
也可以用DOM Level2中的遍历API
<p>
1.创建遍历API对象;
var iterator=document.createNodeIterator(
开始的父节点对象,
whatToShow,
null,false
);
//whatToShow参数:
// NodeFilter.SHOW_ELEMENT
// NodeFilter.SHOW_ALL
2.用while循环,反复调用iterator.nextNode()方法
</p>
网友评论