位置: 编程技术 - 正文

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)

  • 职工薪酬纳税调减的情况
  • 一般纳税人什么条件
  • 企业所得税免税项目
  • 青年企业家协会入会要求
  • 环境评估费应计入什么科目
  • 股票投资会计科目
  • 在建工程待摊支出例题
  • 应收帐款从工资里扣税吗
  • 应收账款客户少了几毛没有付怎么处理
  • 资产的名义已使用年限与实际已使用年限的区别与联系
  • 开发成本可以计增值税吗
  • 公司支付倒垃圾费怎么做会计分录
  • 印花税按次申报和按期申报区别
  • 出口发票税率为0还能退税吗
  • 餐饮业个体工商户怎么交税
  • 资本金结汇资金用途
  • 企业为职工缴纳的五险一金占工资总额的多少
  • 注册资本金认缴制
  • 公司对外租赁
  • 公司有物业管理部门吗
  • 货款已经收到
  • 华为鸿蒙系统如何关闭hd通话
  • 广告费和业务宣传费税前扣除基数
  • 调整会计分录是什么
  • 日历怎么不能添加事件了
  • 收到法院的案件款应该怎么做帐
  • 个人出租住房如何开增值税专用发票
  • 酒店客房收入怎么算
  • 双分录怎么做
  • PHP isset()与empty()的使用区别详解
  • MySQL高级查询
  • 【深度学习】pix2pix GAN理论及代码实现与理解
  • 微软的人工智能ChatGPT
  • 其他应收款等于
  • 一般情况下公司为什么会吊销
  • 销项和进项税额还需要月底转出么
  • 在mysql中子查询是
  • 发布相应的搜索公告
  • 售后回租的实际利率
  • sqlserver2016维护计划
  • sql server 2005数据库备份
  • 开票机号可以随便填吗
  • 采购原材料未入库
  • 固定资产清理的金额怎么算
  • 专票不小心印上划痕
  • 普通发票忘记开数量和单价可以用吗?
  • 免租期租金可以追回吗
  • 销售给回扣的话术
  • 进项税额转出如何计算增值税
  • 商场联营扣点的合作方式
  • 工会经费可以购买办公用品吗?
  • 票据质押如何做账
  • 香港的收据可以作为报销凭证吗
  • 品牌代理费计入什么科目
  • 个体工商户纳税申抿
  • 固定资产清理明细账采用什么账簿
  • win10预览版选哪个
  • centos6.5mini安装教程
  • 联想lenovo小新pro16 2023版
  • win10系统预览版
  • win7电脑蓝牙图标怎么弄出来
  • Linux Mint Cinnamon中安装MATE桌面详细步骤
  • linux查看sh
  • lsm.exe是什么程序
  • win7升级win10系统版本软件还有吗
  • win10系统怎么设置屏幕保护
  • 批处理常用命令总结
  • unity ui碰撞
  • unity设置窗口位置
  • Unity3D值Input Manager
  • iframe嵌套页面滚动事件
  • unity获取鼠标
  • 四川省 税务局
  • 挂车买保险是怎么买的
  • 退发票操作流程
  • 国税人事部门党建工作(税务局党建部门)
  • 威海行风热线实时收听
  • 掌上海关怎么查询
  • 上海市浦东新区人民医院
  • 增值税按次纳税的规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设