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

xiaoxiao2021-02-28  10

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 }

转载请注明原文地址: https://www.6miu.com/read-1250232.html

最新回复(0)