位置: 编程技术 - 正文

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年定额征收额度是多少
  • 支付稿费演出费用怎么算
  • 国库集中支付行政运行
  • 有发票和银行单据的区别
  • 房屋出租要交产证吗
  • 土地款抵扣增值税在纳税申报表中如何填写
  • 财务费用利息收入在损益表中怎么填
  • 进项发票已入账抵扣后开负数红冲怎么处理
  • 汇总转账凭证可以是一借多贷
  • 一般纳税人减免的增值税怎么记账
  • 递延收益在现金流量表体现吗
  • 工会经费的优惠政策2020
  • 1697509439
  • 收到进项专用发票会计分录
  • PHP:Memcached::getMultiByKey()的用法_Memcached类
  • 支付手续费委托代销是什么意思
  • php数组函数题目
  • 位于阿曼和迪拜的大学
  • vue脚手架安装命令
  • 增值税留抵税额可以结转下一年吗
  • 个体工商户使用个人二维码收款违法吗
  • PHP模拟http请求的方法详解
  • pico实例
  • 纳税检查调整销售额什么意思
  • redishi
  • 商品过期的会计分录
  • 企业会计准则规定了
  • 哪些公司不交五险一金
  • 营改增后发票管理办法
  • 政府会计业务活动费用会计分录
  • 汽车修理费用会计分录
  • 一般纳税人购入需要安装的生产设备,其入账价值包括
  • T-SQL语句修改数据表属性
  • sql2008还原到2012
  • 长期股权投资其他资本公积
  • 房地产开发企业增值税税率
  • 因质量问题免费退货
  • 固定资产是怎么管理的
  • 收政府的慰问金合法吗
  • 一般纳税人销售旧货可以开专票吗
  • 发票冲红的会计怎么处理
  • 公司购买汽车的购置税可以抵税吗
  • 汇算清缴产生的企业所得税如何做账
  • 农村会计记账实例
  • 债权投资和其他应收款的区别
  • SQL直接操作excel表(查询/导入/插入)
  • sql server 错误
  • mysql如何输入数据
  • MySQL 5.7 mysql command line client 使用命令详解
  • mysql字符集设置命令
  • 不一样的萧先生
  • ubuntu系统如何安装
  • linux进程管理器
  • windows任务管理器占用cpu过高
  • 电脑window8系统怎么样
  • win10如何设置默认应用语言
  • nodejs代码规范
  • nodejs使用场景
  • cocoscreator lua
  • js frameset
  • node js 开发
  • jquery onready
  • shell中setenv
  • python各种函数
  • 三消游戏在线
  • android基础知识总结
  • android studio报错
  • unity-gain
  • python中import导入模块的方法
  • 国家税务总局跨区迁移规定
  • 深圳税务局官方客服电话
  • 公司欠税款,还不上,怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设