位置: 编程技术 - 正文

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)

  • 税控盘开票软件访问数据库错误
  • 税收的经济效应是指税收对纳税人生产
  • 税前弥补以前年度亏损例
  • 建筑业预缴增值税怎么填纳税申报表
  • 非独立核算分公司个税怎么申报
  • 企业筹办期间可以贷款吗
  • 房地产企业拆迁补偿契税政策
  • 无形资产界定标准
  • 被财政收回的财政经费如何做财务处理?
  • 私人出租房子发票怎么开
  • 产品置换广告费
  • 债券溢价摊销额计算公式
  • 实收资本属于会计科目吗
  • 汽车违章罚款在哪里缴纳
  • 增值税专用发票抵扣期限
  • 电梯增值税率是多少
  • 税收分类编码风险评估
  • 一般纳税人为其他公司制作标书怎么缴税?
  • 背书出去的票据信息在哪里查询
  • 资产收购账务处理
  • 贴现率与再贴现率计算机行业是好多
  • 盘盈对应的入账科目
  • 稽查查补是什么意思
  • 企业计算缴纳的所得税费用
  • 理财认购申购
  • 网络适配器不见了win7.上不了网了
  • 为职工缴纳的意外保险费用
  • 冲减以前年度营业外收入
  • 开办费计入长期待摊费用汇算清缴时怎么填写
  • mac dash
  • mac安装双系统教程
  • 培训机构开办资金
  • 汇付的注意事项有哪些内容
  • 以太网默认网关不可用
  • 最快的网络传输速率
  • crontab不执行的原因和解决方案
  • win10iis安装配置
  • javascript导入包
  • 食堂员工自己吃饭违法吗
  • php windows
  • 服装店快递费
  • 应收账款计提减值准备的方法
  • 不动产固定资产清理
  • 成本费用率分析说明
  • sql server数据库设置定时任务
  • 一般纳税人简易计税方法适用情形
  • 分公司是否能开劳务发票
  • 个人无需办理汇票业务
  • 收入费用表本期盈余与资产负债表不一致
  • 利润分配未分配利润在报表里怎么体现
  • 物业公司维修服务范围
  • 研发费用账务处理一定在管理费用吗
  • 房地产契税新政策2023
  • 缴纳房产税如何做账务处理
  • 企业支付宝买东西怎么买
  • 投资款不属于收入吗
  • 在建工程转固规定
  • 广告公司如何开展业务
  • 取得投资时支付的相关税费
  • Mysql优化sql方案
  • mysql为什么很受大家青睐
  • 怎么设置win7密码
  • Office 2007在Windows Vista中出现的反常字体问题的解决办法
  • 苹果15手机价格和图片颜色
  • ubuntu系统如何设置永不休眠
  • win8系统网络设置在哪里
  • linux用户相关命令
  • win10更新系统遇到错误
  • win7如何禁用网卡
  • windows8优化
  • cocos2dx小游戏
  • Extjs4 关于Store的一些操作(加载/回调/添加)
  • cocos2dx-3.1.1 win8+eclipse+android开发 初学者容易迷惑的两个问题
  • 谈谈关于中华文明的五个突出特性
  • 字符串拼接join
  • unity3d课程
  • jquery动态
  • jquery中绑定和解绑的事件有哪些
  • 中医药文化进校园活动
  • 福建省网上税务办事大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设