深度优先遍历DOM节点

深度优先遍历的特点就是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>HTML DOM的节点遍历</title>
<script type="text/javascript">
    var info = "";
    var num=0;
    function output_node() {
        //document 获取根元素
        var root = document.documentElement;
        //遍历所有的节点
        traverseNodes(root);

        info="共有"+num+"个元素节点\n"+"按深度优先遍历方法搜索节点如下:\n"+info;
        alert(info);
        info = "";
        num=0;
    }

    function display(node){
      info+="第"+(++num)+"个元素是:"+node.nodeName+"\n";
    }     

    function traverseNodes(node){  

        //判断是否是元素节点
        if(node.nodeType == 1){
            display(node);  

            //判断该元素节点是否有子节点
            if(node.hasChildNodes){
                //得到所有的子节点
                var sonnodes = node.childNodes;
                //遍历所有的子节点

                for (var i = 0; i < sonnodes.length; i++) {
                    //得到具体的某个子节点
                    var sonnode = sonnodes.item(i);
                    //递归遍历
                    traverseNodes(sonnode);
                }
            }
        }
    }  

</script>

</head>

<body>
<form id="form1" name="form1" method="get" action="">
<input type="button" id="test" value="输出HTML DOM元素节点" onclick="output_node()" />
</form>
<main>
    <div>
        <img src="">
        <h2>hhh</h2>
        <span>kkk</span>
    </div>
    <ul>
        <li><h5>fff</h5></li>
        <li><div>ggg</div></li>
    </ul>
</main>

</body>
</html>

深度优先遍历的实际效果等同于直接遍历访问内置数组document.all中的元素

<script>
    function output_node() {
        var j = 0
        var info = "页面元素个数=" + document.all.length + "\n";
        for (var i = 0; i < document.all.length; i++) {
            j = i + 1;
            info = info + "第" + j + "个=" + document.all(i).tagName + "\n";
        }
        alert(info);
    }
    output_node();
</script>

原文地址:https://www.cnblogs.com/chuanzi/p/10386171.html

时间: 2024-10-27 21:51:09

深度优先遍历DOM节点的相关文章

JS遍历DOM 节点树的实现

本文将分享 DOM 节点树深度遍历.广度遍历代码. 假定我仅遍历 body 且其结构如下: <body> <section class="container"> <div class="left"> <div class="menu"></div> </div> <div class="right"> <div class="b

5月25日-js操作DOM遍历子节点

一.遍历节点 遍历子节点 children();//获取节点的所有直接子类 遍历同辈节点 next(); prev(); siblings();//所有同辈元素 *find(); 从后代元素中查找匹配的 filter(); 过滤查找 each() 遍历节点 $("li").each(function(i,ele){ //alert($(ele).html()); }); 二.css DOM操作 三.表单校验 表单选择器

访问DOM节点

我们来个例子,一个HTML里包含一段文本和一个无序的列表. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head&

邻接表的深度优先遍历

转载请注明出处http://www.cnblogs.com/hslzju 对<大话数据结构>P241——邻接表的深度优先遍历,进行了自己的理解并完善了代码. 邻接矩阵的深度优先遍历见http://www.cnblogs.com/hslzju/p/5399249.html 举个简单的无序图例子,为了节省时间传手稿. 首先用邻接表的存储结构创建该图,再进行深度优先遍历.代码和解释如下(Qt Creator测试通过): 1 #include <iostream> 2 #include &

树的深度优先遍历和广度优先遍历非递归实现.

注:树的深度优先遍历就是二叉树的先序遍历. 下面是代码. 1 package tooffer; 2 3 import java.util.LinkedList; 4 import java.util.Stack; 5 6 public class TreeNode { 7 int val = 0; 8 TreeNode left = null; 9 TreeNode right = null; 10 11 public TreeNode(int val) { 12 this.val = val;

图的深度优先遍历(DFS) c++ 非递归实现

深搜算法对于程序员来讲是必会的基础,不仅要会,更要熟练.ACM竞赛中,深搜也牢牢占据着很重要的一部分.本文用显式栈(非递归)实现了图的深度优先遍历,希望大家可以相互学习. 栈实现的基本思路是将一个节点所有未被访问的“邻居”(即“一层邻居节点”)踹入栈中“待用”,然后围绕顶部节点猛攻,每个节点被访问后被踹出.读者可以自己画图分析一下,难度并不大. 代码写的比较随意,仅供参考.~ #include <iostream> #include <stack> using namespace

数据结构(C实现)------- 图的深度优先遍历

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 算法描述: 假设给定图G的初始状态是所有顶点均未曾访问过,在G中任选一顶点vi为初始的出发点,则深度优先遍历可定义如下: 首先访问出发点vi,并将其标记为已被访问过:然后,依次从vi出发遍历vi的每一个邻接点vj,若vj未曾访问过,则以vj为新的出发点继续进行深度优先遍历,直至图中所有和vi有路径相通的顶点都被访问到为止.因此,若G是连通图,则从初始出发点开始的遍历过程结束

C++ 二叉树深度优先遍历和广度优先遍历

二叉树的创建代码==>C++ 创建和遍历二叉树 深度优先遍历:是沿着树的深度遍历树的节点,尽可能深的搜索树的分支. //深度优先遍历二叉树void depthFirstSearch(Tree root){ stack<Node *> nodeStack; //使用C++的STL标准模板库 nodeStack.push(root); Node *node; while(!nodeStack.empty()){ node = nodeStack.top(); printf(format, n

深度优先遍历多叉树结构,输出叶子路径

树结构的深度优先遍历是应用中常见的问题 在实际项目中,多叉树出现的比较普遍,常用来存储类似字典词条的路径信息. 多叉树对于在一个序列中找到前缀匹配的所有路径是可行的选择,例如找到一段文字中所有前缀匹配的词条(中国人民解放军为例,有中,中国,中国人,中国人民,中国人民解放军等匹配词条). 构造一棵包含所有中文词条的字典树,可以通过深度优先遍历快速解析出这些前缀匹配的词条,树的每一个节点都是一个汉字,尔从根节点出发的路径是存储的中文词条. 以下的代码是一段示例,它的遍历会输出所有的叶子节点. 树结构