ITPub博客

首页 > IT职业 > IT生活 > 在document.createTreeWalker()中过滤(3)

在document.createTreeWalker()中过滤(3)

原创 IT生活 作者:cenfeng 时间:2019-08-02 15:08:59 1 删除 编辑

在这种情况下,并非文档中的所有DIV和IMG元素都可以被提取! 这是因为图像可能包含在被拒绝的元素(如<P>)中,导致TreeWalker在遇到不需要的P元素时自动跳过它。

- 示例:按类属性处理元素

在本演示中,我将使用TreeWalker对象轻松过滤出页面上的所有元素,其中class =“blue”,并将其颜色更改为红色。

1
2
3
4
五
6
7
8
9
10
11
12
13
14
<font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >getelementbyclass =函数(节点){</font></font><font></font><font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >
if (node.className ==“blue”) //过滤掉具有此class属性的元素</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
返回NodeFilter.FILTER_ACCEPT</font></font><font></font><font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >
其他</font></font><font></font><font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >
返回NodeFilter.FILTER_SKIP</font></font><font></font><font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >
}</font></font><font></font>
<font></font><font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >
var rootnode = document.body</font></font><font></font><font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >
var walker = document.createTreeWalker(rootnode,NodeFilter.SHOW_ELEMENT,getelementbyclass, false )</font></font><font></font>
<font></font><font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >
while (walker.nextNode())</font></font><font></font><font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >
walker.currentNode.style.color = “红”</font></font><font></font>
<font></font><font style= "vertical-align: inherit;" ><font style= "vertical-align: inherit;" >
walker.currentNode = document.body //将Tree Walker位置重置为根节点</font></font>

这里没什么新东西,但注意红线。 在我遍历我的Tree Walker实例后,我将其currentNode属性重置回根节点,因此后续调用将在再次收集已过滤节点的开始时开始。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69933200/viewspace-2652590/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-06-18

  • 博文量
    125
  • 访问量
    129472