位置: 编程技术 - 正文

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)

  • sql语句中单引号嵌套问题(一定要避免直接嵌套)(sql语句中单引号是什么)

    比如下面例子是存储过程里查询时的语句示例

    红色部分是会报错的,应该写成 @condition= 'ROOMTYPElike ‘ ‘%标准间%' ‘ ', 蓝色部分不是双引号,而是两个单引号

    谈谈sqlserver自定义函数与存储过程的区别 一、自定义函数:1.可以返回表变量2.限制颇多,包括不能使用output参数;不能用临时表;函数内部的操作不能影响到外部环境;不能通过select返回结果

    深入分析SqlServer查询计划 对于SQLServer的优化来说,优化查询可能是很常见的事情。由于数据库的优化,本身也是一个涉及面比较的广的话题,因此本文只谈优化查询时如何看懂SQ

    sql 判断字符串中是否包含数字和字母的方法 判断是否含有字母selectPATINDEX('%[A-Za-z]%',‘ads')=0(如果存在字母,结果1)判断是否含有数字PATINDEX('%[0-9]%',‘sdf" class="img-responsive" alt="sql语句中单引号嵌套问题(一定要避免直接嵌套)(sql语句中单引号是什么)">

    sql语句中单引号嵌套问题(一定要避免直接嵌套)(sql语句中单引号是什么)

  • mssql关于一个表格结构的另外一种显示(表达意思不变)(一个关于数据库表中的各条记录)

    mssql关于一个表格结构的另外一种显示(表达意思不变)(一个关于数据库表中的各条记录)

  • win7播放器正在播放音乐突然就中断了不播了该怎么办?(播放器状态)

    win7播放器正在播放音乐突然就中断了不播了该怎么办?(播放器状态)

  • windows系统安全模式的用途(win10安全系统)

    windows系统安全模式的用途(win10安全系统)

  • 苹果操作系统下安装Win7系统具体步骤(手机苹果操作系统)

    苹果操作系统下安装Win7系统具体步骤(手机苹果操作系统)

  • JavaScript中字符串拼接的基本方法(JavaScript中字符串模板)

    JavaScript中字符串拼接的基本方法(JavaScript中字符串模板)

  • unity3d可视化log工具(unity shader可视化编辑)

    unity3d可视化log工具(unity shader可视化编辑)

  • Shell脚本美化登录界面装饰图(含农历)(shell脚本配置环境)

    Shell脚本美化登录界面装饰图(含农历)(shell脚本配置环境)

  • 未确认融资费用和长期应付款
  • 财务费用和应付利息怎么算
  • 出差加油算什么费用
  • 材料出入库制度
  • 税费四舍五入的怎么做帐
  • 法人可以自己申诉个税吗
  • 减免城建税税款会计分录
  • 民办非企业单位设立分机构
  • 城市维护建设税减免税优惠政策
  • 普通发票申请表怎么填写
  • 老板向公司借款用于公司经营
  • 水果 增值税专票
  • 收取职工房租 算收入吗
  • 增值税的会计核算
  • 企业自建房是什么意思
  • 存货的核算心得体会
  • 坏账准备增加记什么方
  • 房地产企业收到房款账务处理
  • 苹果14promax价格
  • 银行存款日记账怎么记账
  • 表彰比例如何确定
  • dgservice.exe是什么
  • 进口货物怎样报关
  • 股权交易的重要性
  • 计提税金及附加怎么算
  • 应酬用的香烟
  • icon图标教程
  • 如何设置长期有效的群二维码安卓手机
  • 房地产企业借款可以用未建成的房子设定浮动抵押吗?
  • 企业接受捐赠的税务处理
  • php提交post数据
  • 升级nodejs到最新版本
  • 宝塔怎么做?
  • 单位购日用品计提折旧吗
  • 生产成本有什么
  • 一般纳税人都是按月申报吗
  • 企业员工年终奖仲裁
  • 网约车提现多久到账
  • sqlserver如何锁表
  • 没有以前年度损益科目应该加在什么地方
  • 消防工程改造方案
  • 内含报酬率概念
  • 高新技术企业支付特许权使用费
  • 制造费用期末有余额在借方
  • 开办费用怎么处理
  • 报废半成品怎么做账
  • 办公室清洁费计入办公费吗
  • 销售产品的软件平台
  • 资产负债表里的应交税费怎么填
  • 抵扣认证的发票怎么冲红
  • 对方开普票,怎么扣税
  • 自产委托加工的货物用于非增值税应税项目
  • 律师事务所优惠政策
  • vmware虚拟化解决方案
  • win7连接宽带
  • win8.1 build9600
  • windows无法完成配置若要尝试恢复配置
  • win7系统玩红色警戒怎么全屏设置
  • nerosvc.exe - nerosvc是什么进程 有什么用
  • window10重置和做系统的区别
  • [置顶] clauvio,Twitter小老鼠
  • 导演都有什么分类
  • unity游戏开发入门经典
  • js实现apply函数
  • 什么是碰撞检测
  • unity flybird
  • 获取服务器信息失败mc
  • JavaScript中setUTCFullYear()方法的使用简介
  • jquery创建表格
  • python类怎么用
  • python运行批处理文件
  • 税控盘登录密码忘了怎么办怎么重置
  • 税务稽查工作底稿属于什么证据
  • 增值税是否在利润表反映
  • 内蒙古国地税联合办税服务厅
  • 办理跨区域事项报验
  • 耕地被占用税怎么交
  • 财税[2020]25号
  • 地税服务费算什么科目
  • 企业所得税年报什么时候开始申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设