var slice = Array.prototype.slice function iterativelyWalk(nodes, cb) { nodes = slice.call(nodes) while(nodes.length) { var node = nodes.shift(), ret = cb(node) if (ret) { return ret } if (node.childNodes.length) { nodes = slice.call(node.childNodes).concat(nodes) } } }