下面两者都是深度优先 IE不支持DOM遍历
1.NodeIterator
开始节点
访问节点类型
选择器 接受的显示
false html不用
//参数3
var filter = {
acceptNode: function(node){
return node.tagName.toLowerCase() == "div" ?
NodeFilter.FILTER_ACCEPT : //筛选
NodeFilter.FILTER_SKIP; //跳过
}
}
var iterator = document.createNodeIterator(document.body, NodeFilter.SHOW_ELEMENT, filter, false);
//两个方法
var node = iterator.nextNode();
while(node !== null){
node = iterator.previoueNode();
}
2.TreeWalker
提供不同方向上遍历DOM的方法,任何方向移动
parentNode() firstChild() lastChild() nextSibling() previousSibling() currentNode属性
//与nodeIterator参数相同
var walker = document.createTreeWalker(mydiv, NodeFilter.SHOW_ELEMENT,null, false);
参数3跳转方向区别
类型 | 描述 |
---|---|
NodeFilter.FILTER_SKIP | 跳过当前节点,进入子树节点 |
NodeFilter.FILTER_REJECT | 跳过当前子树 |