位置: 编程技术 - 正文

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)

  • 建筑行业有哪种职业
  • 土地使用税的纳税时间
  • 建筑施工企业增值税税率是多少
  • 怎么找回丢失的手机号
  • 研发项目增值税税率
  • 固定总价合同中,承包人承担的价格风险
  • 企业合并的被合并方会计分录
  • 可供出售资产减值损失
  • 分摊材料成本差异的会计处理
  • 实收资本借方增加还是减少
  • 产权转移书据印花税申报期限
  • 多转出的进项税能否转回
  • 购买国债逆回购有股东限制
  • 抄税没成功
  • 坏账准备金最新计算公式
  • 建筑服务工程款会计分录
  • 高速公路通行费抵扣最新规定
  • 不抵扣发票如何勾选
  • 旅游业企业所得税要求
  • 城建税印花税教育附加税各是多少
  • 出纳人员发现假章怎么办
  • 车辆保险返点计算器
  • 行政划拨无偿取得的土地使用权属于什么资产
  • 企业所得税调增调减项目比例
  • 建筑劳务公司计提人工劳务费需要工资表吗?
  • 民间非营利组织会计制度及操作实务
  • PHP:oci_field_size()的用法_Oracle函数
  • 吕宋岛以南坐落着21座极大的岛屿
  • 阿巴拉契亚国家步道的英文怎么说
  • yii2关联查询
  • 哪种审计证据更可靠
  • 劳务费发票和建筑劳务费发票
  • anaconda下的python
  • vue-axios详细介绍
  • nginx跨域配置详解
  • 宝塔wordpress安装
  • mysql的间隙锁与排他锁
  • phpcms开发手册
  • 前一个月开的发票怎么查
  • python字典操作 遍历
  • phpcms生成html
  • 银行存款为负数可以结账吗
  • 抵扣以前年度进项税
  • 消费税为什么是中央税还是地方税
  • 发放福利视同销售进项税要转出吗?
  • 房租收不回来会计分录
  • 厨师的工资计入什么费用
  • 认缴制不会带来的账务问题
  • 质保金可以先不开票吗
  • 支票小写金额可以涂改吗
  • 可供出售金融资产有哪些
  • 待处理财产损益期末结转到哪里
  • 企业发生存货盘盈时计入营业外收入科目
  • mysql子查询嵌套查询
  • IIS7在Windows Server 2008R2的新改进
  • aow.exe是什么进程
  • ubuntu邮箱客户端
  • 不能运行应用程序的是
  • win7防火墙打不开错误代码6801
  • win10通过任务管理器打开设置
  • linux网络接口配置命令
  • windows8.1怎么用
  • 微软平板
  • opengl纹理贴图步骤
  • IE6,IE7和firefox对DIV的支持区别
  • python的步骤
  • 在node.js中想要监听事件
  • python生成矩阵的方法
  • js中的set
  • 用python做一个贪吃蛇
  • mapper--图片热点区域高亮组件官方站点
  • Material Design:利用RecyclerView CardView实现新闻卡片样式
  • 哪个机场离东莞樟木头最近
  • 在电子税务局如何增加税种
  • 职称申报结束多久公示
  • 增值税应税货物清单
  • 土地增值税计税
  • 为什么征收城市建设维护税却不征收教育附加税
  • 江苏地方税务局2013招考公告
  • 农夫山泉水质量合格吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设