位置: 编程技术 - 正文

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)

  • 金税盘数据怎么备份
  • 税收优惠政策落实情况报告
  • 餐饮流水账表格excel
  • 往法人账户转备用金
  • 为在建工程发生的管理费用
  • 公司成立后有哪些开支
  • 支付的租金计入什么会计科目
  • 代扣代缴个人所得税手续费是否缴纳增值税
  • 小规模季度超过30万,普票咋交税
  • 进项抵扣抵扣
  • 全国失信人员信息
  • 创新券补贴可以算作高新收入吗?
  • 增值税多交可以在下一期直接抵吗
  • 企业跨年度的收入退回应该如何进行会计处理?
  • 在win7系统中,怎么把D盘里的文件移到C盘里?
  • 未办理土地使用权证房屋买卖 案例
  • PHP:session_destroy()的用法_Session函数
  • 出口零申报步骤
  • 股东借款给公司会计分录
  • b250主板最好的cpu是哪一款
  • msoxmled.exe是什么软件
  • 建造一座污水处理池投资了45万元
  • 阿巴拉契亚国家步道的英文怎么说
  • php代码规范七大原则
  • 收到无法支付的押金收入
  • 建筑行业总分包怎么算
  • 白 犀牛
  • 微服务架构java框架
  • vue脚手架安装命令
  • element ui的作用
  • 猿厂猿作设计机构招聘
  • HTML 事件参考手册
  • 固定资产到期日
  • 商业折扣,现金折扣,销售折让的核算特点
  • 个人提供劳务需要开发票吗
  • mysql数据库死锁产生的原因及解决方案
  • 以发行股票作为对价取得企业的股权
  • 河南巩义黄河治理项目土方工程有哪些
  • mysql用中文字段
  • 免税所得包括哪些
  • 融资租赁后期收入怎么算
  • 固定资产对外投资通过固定资产清理吗
  • 房租费会计分录
  • 车辆加油费会计分录
  • 进出口总额用什么字母表示
  • 固定资产错记到费用了怎么办
  • 固定资产更换配件 资本化标准
  • 民办幼儿园如何生存
  • 企业预交所得税税率
  • 出租房屋的广告怎么写好
  • 会计往来账怎么用excel做更快
  • 什么是固定资产?其特征有哪些
  • sql server怎么创建表语句
  • Mac OS10.11下mysql5.7.12 安装配置方法图文教程
  • 在windows操作中
  • 电脑系统2003
  • win7系统不能修改
  • win10更换登陆账号
  • xp清理系统的命令
  • win10rs2是哪个版本
  • 电脑xp系统虚拟内存不足怎么解决
  • centos做bond4
  • 在对linux系统中dir
  • 家庭普通版win7
  • cocos3d物理引擎
  • 炉石传说代码怎么导入
  • ExtJS4中使用mixins实现多继承示例
  • ExtJS4利根据登录后不同的角色分配不同的树形菜单
  • 使用JQuery FancyBox插件实现图片展示特效
  • nodejs 代码加密
  • python中文分词库
  • js点击按钮返回前一个页面
  • Android:wpa_supplicant决定选择哪种驱动
  • 批处理for命令修改后缀名
  • 在Android EditText中实现日期时间选择器(DatePicker和TimePicker)
  • ubuntu nodejs
  • linux的ls-l命令
  • 多线程 python
  • 城市维护建设税属于什么科目
  • 房屋维修基金会计分录处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设