位置: 编程技术 - 正文

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)

  • 房产税纳税义务人
  • 补交增值税产生的费用
  • 外币收入的增值税是多少
  • 房地产企业消防设施计入什么科目
  • 委托加工物资两种情况例题
  • 原材料亏损率怎么算
  • 一般纳税人建筑公司都交什么税
  • 所有逾期未抵扣进项税额
  • 职工宿舍楼日常管理制度
  • 直接减免的增值税属于财政性资金吗
  • 供应商价格折扣
  • 自建厂房可以不办理房产证吗
  • 一般纳税人在外地预缴税款
  • 无形资产增值税计入入账价值吗
  • 大米加工厂加工技术培训总结
  • 以前年度损益调整结转到哪里
  • 房产税的改革方向
  • 劳务派遣企业的规上企业认定标准
  • 对外捐赠视同销售分录
  • 销售折扣计入增值税销售额的
  • 个人公益性捐赠全额还是限额
  • 实际出资和名义出资
  • 实物捐赠的企业有哪些
  • 土地转让应交税费
  • 企业以盈余公积转增资本,会引起所有者权益总额的变动
  • 公司奖金没有按时发可以要吗
  • 企业补充养老保险
  • 办公费用减少的原因
  • 外销收入申报表怎么填
  • 分配结转本月发出材料成本会计分录
  • mom.exe是什么进程
  • nuxt怎么用
  • 若依框架讲解
  • php7 数组
  • 详解九章算法
  • 多缴税金抵税会怎么样
  • 异地工程预缴税款时间
  • 汇算清缴退回来的钱会计分录怎么做
  • 营业外收支的账户是什么
  • 帝国cms怎么用
  • dedecms怎么更换模板
  • mysql中join的用法
  • 报关单填制相关规范相关文件
  • 全年一次性奖金单独计税还是并入
  • 固定资产溢余
  • 进项税怎么记账
  • 应付账款收不回发票该如何调整
  • 什么是委托检验报告
  • 食品企业产品
  • 可供出售金融资产和交易性金融资产
  • 所得税多缴纳分录
  • 报废车收到的钱怎么做账
  • 应付账款增值税如何挂账
  • 凭证过账的步骤
  • 预收租金的增值税
  • 资金账簿印花税税率
  • mysql基本sql语句大全(基础用语篇)
  • 建立索引mysql
  • mysql理论知识
  • 苹果电脑安全性
  • win10系统即将过期怎么办
  • win8 start menu
  • winXP系统下qq不能视频聊天该怎么办?
  • explorer.exe进程出错
  • gwsloader.exe是什么意思
  • hpg是什么软件打开
  • MAC OS X 10.8通知中心无法访问、停止更新怎么重启
  • fdb是什么文件
  • linux打成zip包
  • window10邮件
  • jquery中checkbox使用方法简单实例演示
  • easyui getselections
  • css回到页面顶部
  • jquery删除数据
  • 广东电子税务局官网登录入口
  • 消防咨询电话24小时
  • 现在是一般纳税人,属于小规模发生的业务怎么开票
  • 企业所得税预缴时间规定
  • 强化管理定义
  • 企业可以享受哪些政策优惠
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设