在document.createTreeWalker()中過濾(3)

cenfeng發表於2019-08-02

在這種情況下,並非文件中的所有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部落格 ” ,連結:http://blog.itpub.net/69933200/viewspace-2652590/,如需轉載,請註明出處,否則將追究法律責任。

相關文章