>[danger]介绍一下Js中的createNodeIterator `createNodeIterator()` 方法是 DOM API 中的一个方法,用于创建一个 NodeIterator 对象,可以用于遍历文档树中的一组 DOM 节点。 通俗一点来讲就是它可以遍历 DOM 结构,把 DOM 变成可遍历的。 **这种方法算是一个比较偏的面试考点**,面试官问你怎样实现遍历 DOM 结构?其实就可以用到这个方法。但是大多数程序员答不上来这个问题,因为我们在日常开发中这个方法用得极少。这个方法常在框架源码中体现。 >[info]应用场景 ~~~ <body> <div id="app"> <p>hello</p> <div class="title">标题</div> <div> <div class="content">内容</div> </div> </div> <script> const body = document.getElementsByTagName('body')[0] const item = document.createNodeIterator(body)//让body变成可遍历的 let root = item.nextNode() // 下一层 while (root) { console.log(root); if (root.nodeType !== 3) { root.setAttribute('data-index', 123)//给每个节点添加一个属性 } root = item.nextNode() } </script> </body> ~~~ 上面代码成功遍历到了各个 DOM 结构: ![](https://img.kancloud.cn/e0/db/e0db3c3a2322d3f8bc430b1ab0c0af44_673x442.png) 并且在每个 DOM 节点上都添加了`data-index = "123"`。