深度优先,递归遍历网页所有节点

   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>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,552评论 25 709
  • 一直以来我都是一个对于老人很抗拒的人,对于变老我有着没来由的恐惧,这种恐惧在某种程度上也成为了一种吸引力,所以,某...
    深海鱼不吃鱼阅读 386评论 0 0
  • 总结2015年下半年所看书目 2015年,对于大环境来讲是很严峻的一年。 2015年,对个人来讲,是值得反思的一年...
    Yingboy阅读 236评论 0 0
  • 佛经中处处说到,修行中要以正见做向导,正见就是“智慧”。修行的目的是为断除”贪嗔痴”。贪嗔痴要用智慧来断除,缺乏智...
    ca9bf363f302阅读 587评论 0 0
  • 阳光灿烂,空气多么清新! 矫疾的燕子边奋飞边歌唱 从那威严的榆树上我静听 蓝鸟预言着阳春已经在望 那边的河这样蓝,...
    梦呓ricot阅读 332评论 3 10