1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>DOM变化(遍历)</title> 6 </head> 7 <body> 8 <p> NodeIterator TreeWalker </p> 9 </body> 10 <script> 11 /* 12 IE 不支持 DOM 遍历。使用下列代码可以检测浏览器对 DOM2 级遍历能力的支持情况。 13 var supportsTraversals = document.implementation.hasFeature("Traversal", "2.0"); 14 var supportsNodeIterator = (typeof document.createNodeIterator == "function"); 15 var supportsTreeWalker = (typeof document.createTreeWalker == "function"); 16 * */ 17 /* 18 NodeIterator 19 NodeIterator 类型的两个主要方法是 nextNode()和 previousNode()。顾名思义,在深度优先 20 的 DOM 子树遍历中,nextNode()方法用于向前前进一步,而 previousNode()用于向后后退一步。 21 在刚刚创建的 NodeIterator 对象中,有一个内部指针指向根节点,因此第一次调用 nextNode()会 22 返回根节点。当遍历到 DOM 子树的最后一个节点时,nextNode()返回 null。previousNode()方法 23 的工作机制类似。当遍历到 DOM 子树的最后一个节点,且 previousNode()返回根节点之后,再次调 24 用它就会返回 null。 25 * */ 26 /* 27 TreeWalker 是 NodeIterator 的一个更高级的版本。除了包括 nextNode()和 previousNode() 28 在内的相同的功能之外,这个类型还提供了下列用于在不同方向上遍历 DOM 结构的方法。 29 parentNode():遍历到当前节点的父节点; 30 firstChild():遍历到当前节点的第一个子节点; 31 lastChild():遍历到当前节点的最后一个子节点; 32 nextSibling():遍历到当前节点的下一个同辈节点; 33 previousSibling():遍历到当前节点的上一个同辈节点。 34 * */ 35 </script> 36 </html>