递归遍历节点树

<!DOCTYPE HTML>
<html>
    <head>
        <title>遍历节点树</title>
        <meta charset="utf-8"/>
        <script src="js/3_2.js"></script>
    </head>
    <body>
        <span>Hello World !</span>
        <ul id="nav">
            <li>娱乐</li>
            <li>电视剧
                <ul>
                    <li>内地</li>
                    <li>韩剧</li>
                    <li>美剧</li>
                </ul>
            </li>
            <li>电影</li>
        </ul>
    </body>
</html>
function getChildren(parent){
      console.log(parent.nodeType==3?parent.nodeValue:parent.nodeName);
   for(var i=0,len=parent.childNodes.length;i<len;i++){
      console.log(parent.childNodes[i].nodeName);
      getChildren(parent.childNodes[i])
   }
}
window.onload=function(){
   getChildren(document.body);

 nodeType: 获得当前节点的类型,返回的是一个数字(专门判断不同节点类型)

ELEMENT_NODE: 1

TEXT_NODE: 3

ATTRIBUTE_NODE: 2

DOCUMENT_NODE: 9

时间: 2024-10-27 12:44:04

递归遍历节点树的相关文章

JavaScript之DOM-4 文档结构和遍历(节点树、元素树、文档的遍历)

一.节点树 节点树 概念 - HTML DOM 将 HTML 文档视作树结构 - 文档中的元素.属性.文本.注释等都被看作一个节点 - 这种结构被称为节点树: 上下层节点 - 节点树中的节点彼此拥有层级关系,DOM 使用如下属性遍历整棵节点树: 平行的节点 - 节点树中使用如下方法访问平行的兄弟节点: 二.元素树 元素树 概念 - 元素树是节点树的一个子集,只包含其中的元素节点 上下层元素 - 与节点树一样,元素树上的元素节点也有父子关系,使用如下属性可以获取这些关系: 平行的元素 - 元素树使

delphi 递归遍历TreeView树节点

//以下全部调试通过,你在窗体扔一个Treeview就行了 procedure GetRootNodes(ATreeView:TTreeView);//得到所有根节点var vNode:TTreeNode;begin  vNode:=nil;  vNode:=ATreeView.Items.GetFirstNode;  While vNode<>nil do  begin    ShowMessage(vNode.Text);//处理查找到的根节点    vNode:=vNode.getNex

遍历节点树

从以下属性读出来的信息可以让我们了解相邻节点之间的关系. childNodes属性将返回一个数组,这个数组由给定元素节点的子节点构成: nodeList = node.childNodes 这个属性返回的数组是一个nodeList集合.这个nodeList集合里的每个节点都是一个节点对象.这些节点对象都有着nodeType.nodeName.nodeValue等常见的节点属性. 文本节点和属性节点都不可能包含任何的子节点,所以他们的childNodes属性永远返回一个空数组. 如果只是想知道某个

树的递归遍历

树是一个由n个有限节点组成并具有层次关系的集合,是一种非线性的数据结构.树是由跟节点和它的子树构成,所以树的定义是递归的.二叉树是树的一种,它的特点是至多有两颗字树,并且二叉树的子树也有左右之分,不能互相颠倒. 二叉树常用的遍历方式有三种,即:前序遍历,中序遍历,后序遍历,这三遍历方式的主要却别是访问根结点和遍历左子树.右子树的先后关系不一样. 访问顺序: 前序遍历:根->左->右 中序遍历:左->根->右 后序遍历:左->右->根 下面由树的递归建立和对树进行递归遍历

递归遍历

递归遍历: 查找指定父节点下所有子代节点 如何: 2步:    1. 先遍历所有直接子节点   2. 在遍历直接子节点时,对每个子节点调用和父节点完全相同的方法. 算法: 深度优先遍历: 每次都优先遍历子节点 所有子节点遍历完,才返回遍历兄弟节点 递归的效率: 极低. 解决: 绝大多数递归都可用循环代替 遍历API: 每次仅遍历下一个节点,可用循环反复执行(了解) 1. 节点迭代器: 如何: 2步: 1. 创建迭代器对象: var iterator=document.createNodeIter

wxPython treeCtrl树节点递归遍历(复制)

下面是递归遍历.获取树节点的方法. 1 def getTreeAllText(self): 2 '''获取树控件的全部文本''' 3 result = [] 4 treeRoot = self.treeCtrl.GetRootItem() 5 rootText = self.treeCtrl.GetItemText(treeRoot) 6 result.append(u'┌'+rootText) 7 def recursivelyGetTreeItem(tree,leval): 8 ''' 递归

06. 父子节点(树)遍历写法小结

原文:06. 父子节点(树)遍历写法小结 对于树/图的遍历,通常有2种算法来实现:迭代(Iteration)和递归(Recursion),迭代是利用循环反复取值/赋值的过程:递归则是反复自己调用自己来获得最终结果.SQL Server里的递归有32层嵌套限制,目的在于防止代码进入死循环,除非使用提示OPTION (MAXRECURSION 0). 测试数据: if OBJECT_ID('city') is not null drop table city GO create table city

树的非递归遍历

树是递归定义的,利用递归算法遍历树实现起来比较简单,然而难的是非递归遍历.非递归遍历需要借助栈这一数据结构来完成. 首先定义树的结点和构建链表栈: //定义树的节点 typedef struct Node { int data; struct Node* lchild; struct Node* rchild; }Node; //定义栈节点 typedef struct Stacknode { Node* tnode; struct Stacknode* next; }Stacknode;  /

节点树和元素树--深度遍历

我们在阅读JS高级程序设计的时候,提到了节点树的概念.比如说: elem.parentNode---找elem的父节点: elem.childNodes---找elem的所有的直接子节点: elem.nextSibling---找elem的下一个同辈节点': elem.previousSibling---找elem的上一个同辈节点 因为childNodes包含看不见的空格文本,还有注释等内容,所以使用起来不是太方便. 因此,JS又重新引入了元素树的概念.这个的话,在我们实际应用中,用的比较普遍.