1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
var slice = Array.prototype.slice module.exports = iterativelyWalk function iterativelyWalk(nodes, cb) { if (!('length' in nodes)) { nodes = [nodes] } nodes = slice.call(nodes) while(nodes.length) { var node = nodes.shift(), ret = cb(node) if (ret) { return ret } if (node.childNodes && node.childNodes.length) { nodes = slice.call(node.childNodes).concat(nodes) } } }