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);
經(jīng)常用來遍歷不確定層級(jí)深度的樹形結(jié)構(gòu),如網(wǎng)頁元素,網(wǎng)盤文件夾,多級(jí)管理結(jié)構(gòu)
也可以用DOM Level2中的遍歷API
<p>
1.創(chuàng)建遍歷API對(duì)象;
var iterator=document.createNodeIterator(
開始的父節(jié)點(diǎn)對(duì)象,
whatToShow,
null,false
);
//whatToShow參數(shù):
// NodeFilter.SHOW_ELEMENT
// NodeFilter.SHOW_ALL
2.用while循環(huán),反復(fù)調(diào)用iterator.nextNode()方法
</p>