js使用深度优先遍历实现getElmentById(id)
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)相关推荐
- [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现
[js] 解释下深度优先遍历和广度优先遍历的区别及如何实现 1.深度优先采用堆栈结构,先进后出,所占的空间较小,执行时间较长: 2.广度优先采用队列结构先进先出,所占空间较大,执行时间短,空间换时间: ...
- 微信小程序——好看的radio单选项框,wxml里列表中遍历数组获取id传回给js页面
微信小程序--好看的radio单选项框 第一种 效果图如下: .wxss代码: .view_container {display: flex;flex-direction: row;justify-c ...
- 417. 太平洋大西洋水流问题(medium) -力扣(leetCode)逆流而上,JS图的深度优先遍历算法
⚡️417. 太平洋大西洋水流问题⚡️ 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度."太平洋"处于大陆的左边界和上边界,而"大西洋"处 ...
- js用递归遍历多维数组_JavaScript树结构操作:查找、遍历、筛选、树结构和列表结构相互转换...
经常有同学问树结构的相关操作,也写了很多次,在这里总结一下JS树形结构一些操作的实现思路,并给出了简洁易懂的代码实现. 本文内容结构大概如下: 一.遍历树结构 1. 树结构介绍 JS中树结构一般是类似 ...
- 论 js中:(class、id)出乎意料的优先级?- 案例篇
文章目录 论 js中:(class.id)出乎意料的优先级?- 案例篇 看图说明 · 案例场景: 重要代码 · 解析 · `提示`: `class / id` 在`js`中抓取的`优先级`:`[代码点 ...
- DFS(深度优先遍历)
DFS的意思为深度优先遍历. 一.DFS的简介: 深度优先遍历(DFS)也叫深度优先搜索.它的定义是:不断地沿着顶点的深度方向遍历.顶点的深度方向是指它的邻接点方向. 二.DFS的实现步骤: 1.从顶 ...
- js中对象数组根据对象id分组并转map
js中对象数组根据对象id分组并转map 如果要将具有相同 id 属性的对象元素,分成不同的数组. 可以先从对象数组中提取相同的 id 属性,再使用 Array.reduce() 和 Map 来进行对 ...
- 连通分量 java_Java编程实现深度优先遍历与连通分量代码示例
深度优先遍历 深度优先遍历类似于一个人走迷宫: 如图所示,从起点开始选择一条边走到下一个顶点,没到一个顶点便标记此顶点已到达. 当来到一个标记过的顶点时回退到上一个顶点,再选择一条没有到达过的顶点. ...
- 实验报告C语言实现图的深度遍历,图的深度优先遍历的C语言实现.pdf
图的深度优先遍历的C语言实现.pdf 维普资讯 九 江 职 业 技 术 学 院 学 报 JournalofJiujiangVocational&TechnicalCollege 2004.2 ...
最新文章
- Android 截取当前Activity并转成Bitmap
- pat 1060. Are They Equal (25)
- labview嵌入c代码_LabVIEW与myRIO嵌入式系统开发入门
- 用Hamcrest验证DateTime和日期
- LeetCode 1207. 独一无二的出现次数
- php统计用户留存脚本,SQL 统计用户留存
- 网易云深度学习第一课第一周编程作业
- “iPhone 3 年内必死!”
- 《Effective C#》读书笔记——条目25:用事件模式实现通知使用C#表达设计
- mac 安装淘宝镜像 cnpm
- win10 账户密码忘记的解决办法
- 短信验证码如何保障用户信息及资金安全
- MATLAB黄金分割法标注最优点,matlab黄金分割法课程论文--.doc
- python --爬虫 --下载小说
- FC6下chm文件阅读器chmsee的安装
- FPGA的PS还有什么PL是什么意思
- wps打开word是绿色的怎么解决?
- Linux后台开发系列之「10.Autoconf 打包软件」
- 委托构造函数继承构造函数
- UE4控制台命令使用
热门文章
- 配置文件管理服务器,06-配置文件管理
- [转载] 2020最新Java面试题,常见面试题及答案汇总
- PHP array_merge()函数与示例
- c ++ 继承_C ++继承| 查找输出程序| 套装1
- 生产领料、退料频繁_领料号码
- ansys添加力矩_ANSYS软件中施加扭矩的方法
- python—装饰器
- scala 字符串函数_Scala中的字符串chomp(或chop)函数
- Java LocalDate类| 带示例的getEra()方法
- 调整灰度图像的大小,而无需在Python中使用任何内置函数