js使用深度优先遍历实现getElmentById(id)

来源:互联网 发布:大数据团队功能 编辑:程序博客网 时间:2024/06/05 14:56
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}


阅读全文
0 0