源代码
function findTree(root, filter) {
let childs = root.childNodes,
len = root.childNodes.length,
index = 0,
needChilds = [];
console.log(childs);
if (typeof filter === "function") {
while (index < len) {
if (filter(childs[index])) {
needChilds.push(childs[index]);
}
++index;
}
index = 0;
len = needChilds.length;
} else {
needChilds = childs;
}
return {
nextNode() {
return index < len
? { node: needChilds[index++], done: false }
: { node: undefined, done: true };
},
previousNode() {
return index > 0
? { node: needChilds[--index], done: false }
: { node: undefined, done: true };
},
};
}
var filter = function (node) {
return node.nodeName.toLowerCase() == "p" ? true : false;
};
var it = findTree(document.body, filter);
var current = it.nextNode();
while (!current.done) {
console.log(current.node);
current = it.nextNode();
}
南无阿弥陀佛