function getElementById(node, id) {if (!node) return null;if (node.id === id) return node;for (var i = 0; i < node.childNodes.length; i++) {var found = getElementById(node.childNodes[i], id);if (found) return found;}return null;}

测试情况。

这里是使用递归的方法来实现id 的选择。

使用递归代码简单,但是性能上比不上非递归的实现,Chrome 浏览器的DOM查找就是使用的非递归。

     function getElementById(node, id) {while (node) {if (node.id === id) return node;node = nextElement(node)}}function nextElement(node) {if (node.children.length) {return node.children[0];}if (node.nextElementSibling) {return node.nextElmentSibling;}while (node.parentNode) {if (node.parentNode.nextElementSibling) {return node.parentNode.nextElementSibling;}node = node.parentNode;}return null}

js使用深度优先遍历实现getElmentById(id)相关推荐

  1. [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现

    [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现 1.深度优先采用堆栈结构,先进后出,所占的空间较小,执行时间较长: 2.广度优先采用队列结构先进先出,所占空间较大,执行时间短,空间换时间: ...

  2. 微信小程序——好看的radio单选项框,wxml里列表中遍历数组获取id传回给js页面

    微信小程序--好看的radio单选项框 第一种 效果图如下: .wxss代码: .view_container {display: flex;flex-direction: row;justify-c ...

  3. 417. 太平洋大西洋水流问题(medium) -力扣(leetCode)逆流而上,JS图的深度优先遍历算法

    ⚡️417. 太平洋大西洋水流问题⚡️ 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处 ...

  4. js用递归遍历多维数组_JavaScript树结构操作:查找、遍历、筛选、树结构和列表结构相互转换...

    经常有同学问树结构的相关操作,也写了很多次,在这里总结一下JS树形结构一些操作的实现思路,并给出了简洁易懂的代码实现. 本文内容结构大概如下: 一.遍历树结构 1. 树结构介绍 JS中树结构一般是类似 ...

  5. 论 js中:(class、id)出乎意料的优先级?- 案例篇

    文章目录 论 js中:(class.id)出乎意料的优先级?- 案例篇 看图说明 · 案例场景: 重要代码 · 解析 · `提示`: `class / id` 在`js`中抓取的`优先级`:`[代码点 ...

  6. DFS(深度优先遍历)

    DFS的意思为深度优先遍历. 一.DFS的简介: 深度优先遍历(DFS)也叫深度优先搜索.它的定义是:不断地沿着顶点的深度方向遍历.顶点的深度方向是指它的邻接点方向. 二.DFS的实现步骤: 1.从顶 ...

  7. js中对象数组根据对象id分组并转map

    js中对象数组根据对象id分组并转map 如果要将具有相同 id 属性的对象元素,分成不同的数组. 可以先从对象数组中提取相同的 id 属性,再使用 Array.reduce() 和 Map 来进行对 ...

  8. 连通分量 java_Java编程实现深度优先遍历与连通分量代码示例

    深度优先遍历 深度优先遍历类似于一个人走迷宫: 如图所示,从起点开始选择一条边走到下一个顶点,没到一个顶点便标记此顶点已到达. 当来到一个标记过的顶点时回退到上一个顶点,再选择一条没有到达过的顶点. ...

  9. 实验报告C语言实现图的深度遍历,图的深度优先遍历的C语言实现.pdf

    图的深度优先遍历的C语言实现.pdf 维普资讯 九 江 职 业 技 术 学 院 学 报 JournalofJiujiangVocational&TechnicalCollege 2004.2 ...

最新文章

  1. Android 截取当前Activity并转成Bitmap
  2. pat 1060. Are They Equal (25)
  3. labview嵌入c代码_LabVIEW与myRIO嵌入式系统开发入门
  4. 用Hamcrest验证DateTime和日期
  5. LeetCode 1207. 独一无二的出现次数
  6. php统计用户留存脚本,SQL 统计用户留存
  7. 网易云深度学习第一课第一周编程作业
  8. “iPhone 3 年内必死!”
  9. 《Effective C#》读书笔记——条目25:用事件模式实现通知使用C#表达设计
  10. mac 安装淘宝镜像 cnpm
  11. win10 账户密码忘记的解决办法
  12. 短信验证码如何保障用户信息及资金安全
  13. MATLAB黄金分割法标注最优点,matlab黄金分割法课程论文--.doc
  14. python --爬虫 --下载小说
  15. FC6下chm文件阅读器chmsee的安装
  16. FPGA的PS还有什么PL是什么意思
  17. wps打开word是绿色的怎么解决?
  18. Linux后台开发系列之「10.Autoconf 打包软件」
  19. 委托构造函数继承构造函数
  20. UE4控制台命令使用

热门文章

  1. 配置文件管理服务器,06-配置文件管理
  2. [转载] 2020最新Java面试题,常见面试题及答案汇总
  3. PHP array_merge()函数与示例
  4. c ++ 继承_C ++继承| 查找输出程序| 套装1
  5. 生产领料、退料频繁_领料号码
  6. ansys添加力矩_ANSYS软件中施加扭矩的方法
  7. python—装饰器
  8. scala 字符串函数_Scala中的字符串chomp(或chop)函数
  9. Java LocalDate类| 带示例的getEra()方法
  10. 调整灰度图像的大小,而无需在Python中使用任何内置函数