位置: 编程技术 - 正文

javascript先序遍历DOM树的方法(先序遍历dlr)

编辑:rootadmin

推荐整理分享javascript先序遍历DOM树的方法(先序遍历dlr),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:先序遍历代码数据结构,js先后顺序,先序遍历java,js先后顺序,先序遍历的代码,先序遍历dlr,js后序遍历,先序遍历java,内容如对您有帮助,希望把文章链接给更多的朋友!

DOM树由文档中的所有节点(元素节点、文本节点、注释节点等)所构成的一个树结构,DOM树的解析和构建是浏览器要实现的关键功能。既然DOM树是一个树结构,那么我们就可以使用遍历树结构的相关方法来对DOM树进行遍历,同时DOM2中的"Traversal"模块又提供了两种新的类型,从而可以很方便地实现DOM树的先序遍历。

注:本文中的5种方法都是对DOM的先序遍历方法(深度优先遍历),并且只关注Element类型。

1. 使用DOM1中的基础接口,递归遍历DOM树

DOM1中为基础类型Node提供了一些api,通过这些api可以完成一些基础的DOM操作。使用递归遍历DOM树的代码比较简单,核心思想就是先处理当前节点,然后再从左到右递归遍历子节点,代码如下:

javascript先序遍历DOM树的方法(先序遍历dlr)

2. 使用DOM1的基础接口,迭代遍历DOM树

与第1种方法不同,这一次使用迭代的方法遍历DOM树。使用迭代遍历DOM树相对复杂一些,关键点在于使用一个栈来维护节点的访问路径,当处理完当前节点时,先把该节点的第一个Element子节点作为下一次循环的根节点,并且按照从右到左的顺序,将当前节点的其他子元素节点压入栈中。如果当前节点没有一个Element子节点,则从栈中弹出一个Element节点作为下一次循环的根节点,直到取不到根节点为止。代码如下:

3. 使用DOM扩展的Element Traversal API,递归遍历DOM树

DOMElement Traversal API提供了几个方便DOM遍历的接口,从而可以更加方便地取得一个节点的Element子节点。在《DOM扩展:DOM API的进一步增强[总结篇-上]》的第2节介绍了DOM扩展的Element Traversal API。代码如下:

4. 使用NodeIterator

DOM2的"Traversal"模块提供了NodeIterator类型,使用它可以很方便地实现DOM树的先序遍历,《JavaScript高级程序设计第三版》的.3.1节介绍了这个类型,我们这里直接给出代码如下:

5. 使用TreeWalker

TreeWalker类型可以说是NodeIterator类型的增强版,《JavaScript高级程序设计第三版》的.3.2节介绍了这个类型,我们这里也直接给出代码如下:

标签: 先序遍历dlr

本文链接地址:https://www.jiuchutong.com/biancheng/378993.html 转载请保留说明!

上一篇:JavaScript开发者必备的10个Sublime Text插件(javascript开发app教程)

下一篇:JavaScript实现iframe自动高度调整和不同主域名跨域(javascript的if)

  • 财务软件费用可以抵税吗
  • 办理出口业务流程
  • 销售收入怎么做会计凭证
  • 一般纳税人销售旧货
  • 个体工商户报税一年几次
  • 纳税申报财务报表上期数
  • 什么时候确认应收股利
  • 个税申报时提示扣缴单位无有效的税费种认定信息
  • 单位没有给员工交社保工伤怎么算
  • 跨年的费用怎么调整
  • 已认证的发票如何冲红步骤
  • 商业汇票的使用范围
  • 怎么填报清算所得税申报表?
  • 搅拌站是自用的账务如何做分录?
  • 购买办公家具合同
  • 定额发票2019
  • 污水处理厂的财务处理流程
  • 年薪超过12万交多少税
  • 长期应付款账面价值和账面余额
  • 小规模减免附加税会计分录怎么做
  • 营改增挂靠工程项目账务处理
  • 税务局查到发票有问题
  • 软件企业证书应该考什么
  • 装饰公司发票怎么
  • win10怎么改通知
  • 代收的水电费怎么做账
  • qtaet2s.exe - qtaet2s是什么进程 有什么用
  • 购买预付卡如何记账
  • php fork
  • php+mysql项目实战教程
  • php options
  • 哪些费用可以计入开办费
  • 业务招待费有
  • 政府性基金和行政事业性收费区别
  • 企业的罚款支出指企业的行政罚款
  • 物业管理单位收取的物业费征不征收增值税
  • 增值税纳税人兼营免税减税项目的
  • php读取数据输出html
  • 甲方如何规避合同责任
  • torch.nn.function
  • 周末闲暇时光是什么意思
  • 固定资产盘盈、盘亏的账务处理?
  • 主营业务收入用三栏式吗
  • 管理费用只能在借方吗
  • 汇算清缴涉及哪些调整
  • 比赛奖金怎么做账
  • 小微企业税款征收方式
  • 结转各项成本的会计分录
  • 社保年审流程示意图
  • 电费为什么计入其他应付款
  • 代扣代缴增值税如何申报抵扣
  • 融资性售后回租承租方出售资产为什么不缴纳增值税
  • 财务报告编制原则
  • 个贷系统平账专户A户付款会计分录
  • 所得税暂缓缴纳本来是不缴纳
  • 保证金抵扣货款情况说明范文
  • 样品制作公司
  • 企业发生装修费就计入长期待摊费用吗还是
  • 如何在电子税务局变更办税人员
  • 买别人的银行卡是啥罪
  • win8操作
  • linux开机启动过程图解
  • 360 sesvc.exe
  • win10周年更新版是什么意思
  • WIN10系统中没有接入音频设备 要启动gui
  • xp磁盘空间不足怎么办
  • Python3.6 Schedule模块定时任务(实例讲解)
  • 变量赋值的含义
  • unity 优化
  • js正则表达式写法
  • unity3d基本操作
  • android实现底部菜单
  • webpack循环引用
  • android的事件处理机制
  • 江苏小孩医保网上缴费
  • 车位办房产证需交多少税
  • 湖北省电子税务局新版登录操作简介
  • 县级税务
  • 国税局招录条件
  • 国税地税征管体制改革方案
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设