1. NodeIterator和 TreeWalker。这两个类型能够基于给定的起点对 DOM 结构执行深度优先遍历。
① NodeIterator类型,有两个方法,nextNode()--在遍历中向前前进一步,previousNode()--在遍历中向后后退一步
使用document.createNodeIterator(root,whatToShow,filter,entityReferenceExpansion)函数来创建NodeIterator实例。
参数的意义:
root:作为便利起点的根节点。
whatToShow:要显示的节点类型(值以常量的形式在NodeFilter类型中定义)。
filter:过滤器。可以是① NodeFilter对象或者② 接受或者拒绝某种特定节点的函数
entityReferenceExpansion:是一个布尔值,表示是否要扩展实体引用(HTML页面中,实体引用不可以扩展)
如:打印下述文档中所有的元素节点。
若要指定filter,则如下:
① NodeFilter对象
② 接受或者拒绝某个特定节点的函数
② TreeWalker类型:有七个方法,一个属性
nextNode()、previousNode()、parentNode()--转到当前节点的父节点、firstChild()--转到当前节点的第一个子节点、lastChild()--转到当前节点的最后一个子节点、nextSibling()--转到当前节点的下一个同辈节点、previousSibling()--转到当前节点的上一个同辈节点。
currentNode属性:表示任何遍历方法在上一次遍历中返回的节点(可以修改遍历继续进行的起点)。
使用document.createTreeWalker(root,whatToShow,filter,entityReferenceExpansion)创建TreeWalker对象
注意NodeFilter.FILTER_SKIP和NodeFilter.FILTER_REJECT的区别
可以不使用过滤器遍历li节点