aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/api/treewalker/index.html
blob: 4e606791362b1974592d65c7be7440dbdec7dfe4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
---
title: TreeWalker
slug: Web/API/TreeWalker
tags:
  - API
  - DOM
translation_of: Web/API/TreeWalker
---
<div>
<p>{{ APIRef("DOM") }}</p>
</div>

<p><strong><code>TreeWalker</code></strong> 对象用于表示文档子树中的节点和它们的位置。</p>

<p><code>TreeWalker</code> 可以使用 {{domxref("Document.createTreeWalker()")}} 方法创建。</p>

<h2 id="Properties" name="Properties">属性</h2>

<p><em>这个接口不继承任何属性。</em></p>

<dl>
 <dt>{{domxref("TreeWalker.root")}} {{readonlyInline}}</dt>
 <dd>返回一个 {{domxref("Node")}} ,表示新建 <code>TreeWalker</code> 时所声明的根节点。</dd>
 <dt>{{domxref("TreeWalker.whatToShow")}} {{readonlyInline}}</dt>
 <dd>返回一个 <code>unsigned long</code> 类型的常量位掩码,表示需要筛选的{{domxref("Node")}} 类型。不匹配的节点会跳过,但其子节点,如果符合条件,则也会被包含。可能的值如下:
 <table class="standard-table">
  <thead>
   <tr>
    <th class="header" scope="col">常量</th>
    <th class="header" scope="col">数字值</th>
    <th class="header" scope="col">描述</th>
   </tr>
  </thead>
  <tbody>
   <tr>
    <td><code>NodeFilter.SHOW_ALL</code></td>
    <td><code>-1</code> (that is the max value of <code>unsigned long</code>)</td>
    <td>显示所有节点。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_ATTRIBUTE</code> {{deprecated_inline}}</td>
    <td><code>2</code></td>
    <td>显示{{ domxref("Attr") }}节点,这意味着使用{{ domxref("TreeWalker") }}访问 {{ domxref("Attr") }}节点时,需要让这些节点处于遍历的开始位置。这是因为这些节点不是任何节点的后代,并不处于文档树之上。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_CDATA_SECTION</code> {{deprecated_inline}}</td>
    <td><code>8</code></td>
    <td>显示 {{ domxref("CDATASection") }}节点。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_COMMENT</code></td>
    <td><code>128</code></td>
    <td>显示 {{ domxref("Comment") }} 节点。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_DOCUMENT</code></td>
    <td><code>256</code></td>
    <td>显示 {{ domxref("Document") }} 节点。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_DOCUMENT_FRAGMENT</code></td>
    <td><code>1024</code></td>
    <td>显示 {{ domxref("DocumentFragment") }} 节点。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_DOCUMENT_TYPE</code></td>
    <td><code>512</code></td>
    <td>显示 {{ domxref("DocumentType") }} 节点。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_ELEMENT</code></td>
    <td><code>1</code></td>
    <td>显示 {{ domxref("Element") }} 节点。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_ENTITY</code> {{deprecated_inline}}</td>
    <td><code>32</code></td>
    <td>显示{{ domxref("Entity") }}节点,这意味着使用{{ domxref("TreeWalker") }}访问 {{ domxref("Entity") }}节点时,需要让这些节点处于遍历的开始位置。这是因为这些节点不是任何节点的后代,并不处于文档树之上。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_ENTITY_REFERENCE</code> {{deprecated_inline}}</td>
    <td><code>16</code></td>
    <td>显示 {{ domxref("EntityReference") }} 节点。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_NOTATION</code> {{deprecated_inline}}</td>
    <td><code>2048</code></td>
    <td>显示{{ domxref("Notation") }}节点,这意味着使用{{ domxref("TreeWalker") }}访问 {{ domxref("Notation") }}节点时,需要让这些节点处于遍历的开始位置。这是因为这些节点不是任何节点的后代,并不处于文档树之上。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_PROCESSING_INSTRUCTION</code></td>
    <td><code>64</code></td>
    <td>显示 {{ domxref("ProcessingInstruction") }} 节点。</td>
   </tr>
   <tr>
    <td><code>NodeFilter.SHOW_TEXT</code></td>
    <td><code>4</code></td>
    <td>显示 {{ domxref("Text") }} 节点。</td>
   </tr>
  </tbody>
 </table>
 </dd>
 <dt>{{domxref("TreeWalker.filter")}} {{readonlyInline}}</dt>
 <dd>返回一个实现{{domxref("NodeFilter")}}接口的对象,这个对象用来挑选相关的节点。</dd>
 <dt>{{domxref("TreeWalker.expandEntityReferences")}} {{readonlyInline}}{{obsolete_inline}}</dt>
 <dd>是个{{domxref("Boolean")}}的标记,表明是否在丢弃一个{{domxref("EntityReference")}}是否同时丢弃其后代。</dd>
 <dt>{{domxref("TreeWalker.currentNode")}}</dt>
 <dd>返回 <code>TreeWalker</code>   当前指向的{{domxref("Node")}}</dd>
</dl>

<h2 id="Methods" name="Methods">方法</h2>

<p><em>这个接口不继承任何方法。</em></p>

<div class="note">
<p><strong>注意</strong>:对于<code>TreeWalker</code> ,一个节点是否<em>可见</em>只取决于<code>whatToShow</code> 和 <code>filter</code>  两个参数(和元素是否在屏幕上可见无关)</p>
</div>

<dl>
 <dt>{{domxref("TreeWalker.parentNode()")}}</dt>
 <dd>移动当前 {{domxref("Node")}}到文档顺序中的第一个“可见”的祖先节点,并返回该节点。如果没有这样的节点,则会返回 null  ,同时也不会发生移动。</dd>
 <dt>{{domxref("TreeWalker.firstChild()")}}</dt>
 <dd>移动当前 {{domxref("Node")}}到当前节点的第一个“可见”子节点,并返回该节点。如果没有这样的节点,则会返回 null  ,同时也不会发生移动。</dd>
 <dt>{{domxref("TreeWalker.lastChild()")}}</dt>
 <dd>移动当前 {{domxref("Node")}}到当前节点的最末一个“可见”子节点,并返回该节点。如果没有这样的节点,则会返回 null  ,同时也不会发生移动。</dd>
 <dt>{{domxref("TreeWalker.previousSibling()")}}</dt>
 <dd>移动当前 {{domxref("Node")}}到当前节点的前一个兄弟节点,并返回该节点。如果没有这样的节点,则会返回 null  ,同时也不会发生移动。</dd>
 <dt>{{domxref("TreeWalker.nextSibling()")}}</dt>
 <dd>移动当前 {{domxref("Node")}}到当前节点的后一个兄弟节点,并返回该节点。如果没有这样的节点,则会返回 null  ,同时也不会发生移动。</dd>
 <dt>{{domxref("TreeWalker.previousNode()")}}</dt>
 <dd>移动当前 {{domxref("Node")}}到文档顺序中前一个节点,并返回该节点。如果没有这样的节点,则会返回 null  ,同时也不会发生移动。</dd>
 <dt>{{domxref("TreeWalker.nextNode()")}}</dt>
 <dd>移动当前 {{domxref("Node")}}到文档顺序中下一个节点,并返回该节点。如果没有这样的节点,则会返回 null  ,同时也不会发生移动。</dd>
</dl>

<h2 id="Specification" name="Specification">规范</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">规范</th>
   <th scope="col">状态</th>
   <th scope="col">注释</th>
  </tr>
  <tr>
   <td>{{SpecName('DOM WHATWG', '#interface-treewalker', 'TreeWalker')}}</td>
   <td>{{Spec2('DOM WHATWG')}}</td>
   <td>Removed the <code>expandEntityReferences</code> property.</td>
  </tr>
  <tr>
   <td>{{SpecName('DOM2 Traversal_Range', 'traversal.html#Traversal-TreeWalker', 'TreeWalker')}}</td>
   <td>{{Spec2('DOM2 Traversal_Range')}}</td>
   <td>Initial definition.</td>
  </tr>
 </tbody>
</table>

<h2 id="浏览器兼容性">浏览器兼容性</h2>



<p>{{Compat("api.TreeWalker")}}</p>

<h2 id="参见">参见</h2>

<ul>
 <li>构造函数: {{domxref("Document.createTreeWalker()")}}.</li>
 <li>相关接口: {{domxref("NodeFilter")}}, {{domxref("NodeIterator")}}.</li>
</ul>