aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/api/node/index.html
blob: cb8fd75f414eb00e70d8dc56fe74f4077d022080 (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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
---
title: Node
slug: Web/API/Node
tags:
  - API
  - DOM
translation_of: Web/API/Node
---
<div>{{APIRef("DOM")}}</div>

<p><strong><code>Node</code></strong> это интерфейс, от которого наследуют несколько типов DOM, он так же позволяет различным типам быть обработанными(или протестированными).</p>

<p>Следующие интерфейсы полностью наследуют от <code>Node</code> его методы и свойства: {{domxref("Document")}}, {{domxref("Element")}}, {{domxref("CharacterData")}} (which {{domxref("Text")}}, {{domxref("Comment")}}, и {{domxref("CDATASection")}} inherit), {{domxref("ProcessingInstruction")}}, {{domxref("DocumentFragment")}}, {{domxref("DocumentType")}}, {{domxref("Notation")}}, {{domxref("Entity")}}, {{domxref("EntityReference")}}</p>

<p>Эти интерфейсы могут возвращать null в особых случаях, когда методы и свойства не уместны. Они могут сбросить исключение - например, когда добавляются дети к типу узла, у которого не может их существовать.</p>

<h2 id="Свойства">Свойства</h2>

<p><em>Наследует свойства от родителей {{domxref("EventTarget")}}</em>.<sup>[1]</sup></p>

<dl>
 <dt>{{domxref("Node.baseURI")}} {{readonlyInline}}</dt>
 <dd>Возвращает {{domxref("DOMString")}} показывающие основной URL. Понятие основного URL изменяется из одного языка в другой; В HTML, это соответствует протоколу , доменному имени и структуре каталогов, все до последнего<code> '/'</code>.</dd>
 <dt>{{domxref("Node.baseURIObject")}} {{Non-standard_inline()}}</dt>
 <dd>(Не доступно для веб-контента.) Только для чтения. Объект {{ Interface("nsIURI") }}, представляющий базовый URI элемента.</dd>
 <dt>{{domxref("Node.childNodes")}} {{readonlyInline}}</dt>
 <dd>Возвращает живой {{domxref("NodeList")}}, содержащий всех потомков данного узла. Живой {{domxref("NodeList")}} означает то, что если потомки <code>узла</code> изменяются, объект {{domxref("NodeList")}} автоматически обновляется.</dd>
 <dt>{{domxref("Node.firstChild")}} {{readonlyInline}}</dt>
 <dd>Возвращает {{domxref("Node")}}, представляющий первый прямой узел потомок узла или<code> null,</code> если узел не имеет потомков.</dd>
 <dt>{{domxref("Node.lastChild")}} {{readonlyInline}}</dt>
 <dd>Возвращает {{domxref("Node")}}, представляющий последний прямой узел потомок узла или <code>null</code>, если узел не имеет потомков.</dd>
 <dt>{{domxref("Node.localName")}} {{obsolete_inline}}{{readonlyInline}}</dt>
 <dd>Возвращает {{domxref("DOMString")}} представляющий локальную часть условного имени элемента. В Firefox 3.5 и более ранних версиях, свойство локального имени в верхнем регистре для HTML элементов (но не XHTML элементов). В более поздних версиях, такого не произошло, и свойство находится в нижнем регистре для HTML и XHTML {{ gecko_minversion_inline("1.9.2") }}. Хотя недавние спецификации требуют от <code>localName</code> быть определённым как интерфейс {{domxref("Element")}}, но браузеры основанные на Gecko все ещё реализуют его как интерфейс {{domxref("Node")}}.</dd>
 <dt>{{domxref("Node.namespaceURI")}} {{obsolete_inline}}{{readonlyInline}}</dt>
 <dd>Пространство имён URI данного узла или <code>null,</code> если нет пространства имён. В Firefox 3.5 и более ранних версиях, HTML элементы не имеют пространства имён. В более поздних версиях, HTML элементы находятся в пространстве имён <code><a class="linkification-ext external" href="http://www.w3.org/1999/xhtml" title="Linkification: http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a></code> для деревьев HTML и XML. {{ gecko_minversion_inline("1.9.2") }}<br>
 Хотя недавние спецификации требуют <code>namespaceURI</code> быть определённым как интерфейс {{domxref("Element")}}, но браузеры основанные на Gecko все ещё реализуют его как интерфейс {{domxref("Node")}}.</dd>
 <dt>{{domxref("Node.nextSibling")}} {{readonlyInline}}</dt>
 <dd>Возвращает {{domxref("Node")}} представляющий следующий узел в древе или <code>null,</code> если не такого узла.</dd>
 <dt>{{domxref("Node.nodeName")}} {{readonlyInline}}</dt>
 <dd>Возвращает {{domxref("DOMString")}} содержащий имя <code>узла</code>. Структура имени будет отличаться от типа имени. Например, {{domxref("HTMLElement")}} будет содержать имя соответствующего тега:<code> 'audio'</code> для {{domxref("HTMLAudioElement")}}, узел {{domxref("Text")}} будет строкой <code>'#text'</code> или узел {{domxref("Document")}} будет строкой<code> '#document'</code>.</dd>
 <dt>{{domxref("Node.nodePrincipal")}} {{Non-standard_inline()}}</dt>
 <dd>{{ Interface("nsIPrincipal") }} представляет основной узел.</dd>
 <dt>{{domxref("Node.nodeType")}}{{readonlyInline}}</dt>
 <dd>Возвращает беззнаковое короткое число <code>(unsigned short</code>) представляющее тип узла. Возможные значения:
 <table class="standard-table">
  <tbody>
   <tr>
    <th scope="col">Имя</th>
    <th scope="col">Значение</th>
   </tr>
   <tr>
    <td><code>ELEMENT_NODE</code></td>
    <td><code>1</code></td>
   </tr>
   <tr>
    <td><code>ATTRIBUTE_NODE</code> {{deprecated_inline()}}</td>
    <td><code>2</code></td>
   </tr>
   <tr>
    <td><code>TEXT_NODE</code></td>
    <td><code>3</code></td>
   </tr>
   <tr>
    <td><code>CDATA_SECTION_NODE</code> {{deprecated_inline()}}</td>
    <td><code>4</code></td>
   </tr>
   <tr>
    <td><code>ENTITY_REFERENCE_NODE</code> {{deprecated_inline()}}</td>
    <td><code>5</code></td>
   </tr>
   <tr>
    <td><code>ENTITY_NODE</code> {{deprecated_inline()}}</td>
    <td><code>6</code></td>
   </tr>
   <tr>
    <td><code>PROCESSING_INSTRUCTION_NODE</code></td>
    <td><code>7</code></td>
   </tr>
   <tr>
    <td><code>COMMENT_NODE</code></td>
    <td><code>8</code></td>
   </tr>
   <tr>
    <td><code>DOCUMENT_NODE</code></td>
    <td><code>9</code></td>
   </tr>
   <tr>
    <td><code>DOCUMENT_TYPE_NODE</code></td>
    <td><code>10</code></td>
   </tr>
   <tr>
    <td><code>DOCUMENT_FRAGMENT_NODE</code></td>
    <td><code>11</code></td>
   </tr>
   <tr>
    <td><code>NOTATION_NODE</code> {{deprecated_inline()}}</td>
    <td><code>12</code></td>
   </tr>
  </tbody>
 </table>
 </dd>
 <dt>{{domxref("Node.nodeValue")}}</dt>
 <dd>Это {{domxref("DOMString")}}, представляющее значение объектов. Для большинства типов <code>Node</code>, возвращает <code>null</code> и любой набор операция игнорируется. Для узлов типа <code>TEXT_NODE</code> ({{domxref("Text")}} objects), <code>COMMENT_NODE</code> ({{domxref("Comment")}} objects), и <code>PROCESSING_INSTRUCTION_NODE</code> ({{domxref("ProcessingInstruction")}} objects), значение соответствует текстовым данным, содержащихся в объекте.</dd>
 <dt>{{domxref("Node.ownerDocument")}} {{readonlyInline}}</dt>
 <dd>Возвращает {{domxref("Document")}} к которому принадлежит этот узел. Если нет связанного с ним документа, возвращает <code>null</code>.</dd>
 <dt>{{domxref("Node.parentNode")}} {{readonlyInline}}</dt>
 <dd>Возвращает {{domxref("Node")}} который является родителем этого узла. Если нет такого узла, по причине того, что узел находится вверху древа или не относится к древу, данное свойство вернёт<code> null</code>.</dd>
 <dt>{{domxref("Node.parentElement")}} {{readonlyInline}}</dt>
 <dd>Возвращает {{domxref("Element")}} который является родителем данного узла. Если узел не имеет родителя или если родитель не {{domxref("Element")}}, это свойство вернёт <code>null</code>.</dd>
 <dt>{{domxref("Node.prefix")}} {{obsolete_inline}}{{readonlyInline}}</dt>
 <dd>{{domxref("DOMString")}} представляющий префикс пространства имён узла или <code>null</code> если нет префикса точно определённого.<br>
 Хотя недавние спецификации требуют того, чтобы <code>префикс</code> был определён как интерфейс {{domxref("Element")}}, браузеры основанные на Gecko ещё реализовывают его как интерфейс {{domxref("Node")}}.</dd>
 <dt>{{domxref("Node.previousSibling")}} {{readonlyInline}}</dt>
 <dd>Возвращают {{domxref("Node")}} представляющий предыдущий узел древа или <code>null</code>, если нет такого узла.</dd>
 <dt>{{domxref("Node.textContent")}}</dt>
 <dd>Это {{domxref("DOMString")}} представляющее текстовый контент элемента и всех его потомков.</dd>
</dl>

<h2 id="Методы">Методы</h2>

<p><em>Наследует методы от своих родителей {{domxref("EventTarget")}}</em>.<sup>[1]</sup></p>

<dl>
 <dt>{{domxref("Node.appendChild()")}}</dt>
 <dd>Вставляет {{domxref("Node")}} как последний дочерний узел данного элемента.</dd>
 <dt>{{domxref("Node.cloneNode()")}}</dt>
 <dd>Клонирует {{domxref("Node")}}, и опционально, все его компоненты. По умолчанию, оно клонирует содержимое узла.</dd>
 <dt>{{domxref("Node.compareDocumentPosition()")}}</dt>
 <dd> </dd>
 <dt>{{domxref("Node.contains()")}}</dt>
 <dd> </dd>
 <dt>{{domxref("Node.getFeature()")}} {{obsolete_inline}}</dt>
 <dd>...</dd>
 <dt>{{domxref("Node.getUserData()")}} {{obsolete_inline}}</dt>
 <dd>Позволяет пользователю получить некоторый {{domxref("DOMUserData")}} от узла.</dd>
 <dt>{{domxref("Node.hasAttributes()")}} {{obsolete_inline}}</dt>
 <dd>Возвращает {{domxref("Boolean")}} показывающий, есть ли у элемента какие-либо атрибуты или нет.</dd>
 <dt>{{domxref("Node.hasChildNodes()")}}</dt>
 <dd>Возвращает {{domxref("Boolean")}} показывающий, есть ли у элемента дочерние узлы или нет.</dd>
 <dt>{{domxref("Node.insertBefore()")}}</dt>
 <dd>Вставляет первым {{domxref("Node")}} данный в качестве параметра, непосредственно перед вторым, потомком данного элемента {{domxref("Node")}}.</dd>
 <dt>{{domxref("Node.isDefaultNamespace()")}}</dt>
 <dd> </dd>
 <dt>{{domxref("Node.isEqualNode()")}}</dt>
 <dd> </dd>
 <dt>{{domxref("Node.isSameNode()")}} {{obsolete_inline}}</dt>
 <dd> </dd>
 <dt>{{domxref("Node.isSupported()")}} {{obsolete_inline}}</dt>
 <dd>Возвращает <a href="https://developer.mozilla.org/en-US/docs/Web/API/Boolean" title="The Boolean object is an object wrapper for a boolean value."><code>Boolean</code></a> флаг содержащий результаты теста, реализует ли реализация DOM конкретную особенность и поддерживается ли эта особенность конкретным узлом.</dd>
 <dt>{{domxref("Node.lookupPrefix()")}}</dt>
 <dd> </dd>
 <dt>{{domxref("Node.lookupNamespaceURI()")}}</dt>
 <dd> </dd>
 <dt>{{domxref("Node.normalize()")}}</dt>
 <dd>Очищает все текстовые узлы под этим элементом (поглотить смежный, удалить пустой).</dd>
 <dt>{{domxref("Node.removeChild()")}}</dt>
 <dd>Удаляет дочерний узел из текущего элемента, который должен быть потомком текущего узла.</dd>
 <dt>{{domxref("Node.replaceChild()")}}</dt>
 <dd>Заменяет одного потомка {{domxref("Node")}} из существующего на второй указанный в параметре.</dd>
 <dt>{{domxref("Node.setUserData()")}} {{obsolete_inline}}</dt>
 <dd>Позволяет пользователю присоединить или удалить {{domxref("DOMUserData")}} к узлу.</dd>
 <dd> </dd>
</dl>

<h2 id="Примеры">Примеры</h2>

<h3 id="Просмотреть_все_дочерние_узлы">Просмотреть все дочерние узлы</h3>

<p>Следующая функция рекурсивный цикл всех дочерних узлов узла и она исполняет вызов функции относительно их (и себя относительно родительского узла).</p>

<pre class="brush: js">function DOMComb (oParent, oCallback) {
  if (oParent.hasChildNodes()) {
    for (var oNode = oParent.firstChild; oNode; oNode = oNode.nextSibling) {
      DOMComb(oNode, oCallback);
    }
  }
  oCallback.call(oParent);
}</pre>

<h4 id="Синтаксис">Синтаксис</h4>

<pre>DOMComb(parentNode, callbackFunction);</pre>

<h4 id="Описание">Описание</h4>

<p>Рекурсивный цикл всех дочерних узлов <code>parentNode</code> и<code> </code>самого <code>parentNode</code>, выполняет <code>callbackFunction</code> относительно их  как <a href="/en-US/docs/JavaScript/Reference/Operators/this" title="en-US/docs/JavaScript/Reference/Operators/this"><code>эти</code></a> объекты.</p>

<h4 id="Параметры">Параметры</h4>

<dl>
 <dt><code>parentNode</code></dt>
 <dd>Родительский узел (<code><strong>Node</strong> <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object" title="en-US/docs/JavaScript/Reference/Global_Objects/Object">Object</a></code>).</dd>
 <dt><code>callbackFunction</code></dt>
 <dd>Колбэк-функции (<a href="/en-US/docs/JavaScript/Reference/Global_Objects/Function" title="en-US/docs/JavaScript/Reference/Global_Objects/Function"><code>Function</code></a>).</dd>
</dl>

<h4 id="Пример_использования">Пример использования</h4>

<p>Следующий пример отправляет в <code>console.log</code> текстовое содержимое body:</p>

<pre class="brush: js">function printContent () {
  if (this.nodeValue) { console.log(this.nodeValue); }
}

onload = function () {
  DOMComb(document.body, printContent);
};</pre>

<h3 id="Удалить_все_потомки_вложенные_в_узел">Удалить все потомки, вложенные в узел</h3>

<pre class="brush: js">Element.prototype.removeAll = function () {
  while (this.firstChild) { this.removeChild(this.firstChild); }
  return this;
};</pre>

<h4 id="Пример_использования_2">Пример использования</h4>

<pre class="brush: js">/* ... как альтернатива document.body.innerHTML = "" ... */
document.body.removeAll();</pre>

<h2 id="Спецификации">Спецификации</h2>

<table class="standard-table">
 <thead>
  <tr>
   <th scope="col">Спецификация</th>
   <th scope="col">Статус</th>
   <th scope="col">Комментарий</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>{{SpecName('DOM WHATWG', '#interface-node', 'Node')}}</td>
   <td>{{Spec2('DOM WHATWG')}}</td>
   <td>Удалены следующие свойства: <code>attributes</code>, <code>namespaceURI</code>, <code>prefix</code>, и <code>localName</code>.<br>
    Удалены следующие методы: <code>isSupported()</code>, <code>hasAttributes()</code>, <code>isSameNode()</code>, <code>getFeature()</code>, <code>setUserData()</code>, и <code>getUserData()</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('DOM3 Core', 'core.html#ID-1950641247', 'Node')}}</td>
   <td>{{Spec2('DOM3 Core')}}</td>
   <td>Методы <code>insertBefore()</code>, <code>replaceChild()</code>, <code>removeChild()</code>, and <code>appendChild()</code> возвращают ещё один вид ошибок (<code>NOT_SUPPORTED_ERR</code>) если вызваны из {{domxref("Document")}}.<br>
    Метод <code>normalize()</code> был модифицирован таким образом, что узел {{domxref("Text")}} также может быть нормализован, если надлежащий флаг {{domxref("DOMConfiguration")}} установлен.<br>
    Добавлены следующие методы: <code>compareDocumentPosition()</code>, <code>isSameNode()</code>, <code>lookupPrefix()</code>, <code>isDefaultNamespace()</code>, <code>lookupNamespaceURI()</code>, <code>isEqualNode()</code>, <code>getFeature()</code>, <code>setUserData()</code>, and <code>getUserData().</code><br>
    Добавлены следующие свойства: <code>baseURI</code> and <code>textContent</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('DOM2 Core', 'core.html#ID-1950641247', 'Node')}}</td>
   <td>{{Spec2('DOM2 Core')}}</td>
   <td>Свойство <code>ownerDocument</code> был слегка изменён, так что {{domxref("DocumentFragment")}} также возвращает <code>null</code>.<br>
    Добавлены следующие свойства: <code>namespaceURI</code>, <code>prefix</code>, and <code>localName</code>.<br>
    Добавлены следующие методы: <code>normalize()</code>, <code>isSupported()</code> and <code>hasAttributes()</code>.</td>
  </tr>
  <tr>
   <td>{{SpecName('DOM1', 'level-one-core.html#ID-1950641247', 'Node')}}</td>
   <td>{{Spec2('DOM1')}}</td>
   <td>Изначальное описание.</td>
  </tr>
 </tbody>
</table>

<p> </p>

<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2>

<p>{{CompatibilityTable}}</p>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Свойство</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari</th>
  </tr>
  <tr>
   <td>Базовая поддержка</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("1.0")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>getFeature()</code>{{obsolete_inline}}</td>
   <td>{{CompatNo}}</td>
   <td>Поддерживаемые от {{CompatGeckoDesktop("1.0")}} до {{CompatGeckoDesktop("6.0")}}.<br>
    Удалено в {{CompatGeckoDesktop("7.0")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>getUserData()</code>, <code>setUserData()</code> and <code>hasAttributes()</code> {{deprecated_inline}}</td>
   <td>{{CompatNo}}</td>
   <td>Поддерживаемые от {{CompatGeckoDesktop("1.0")}} до {{CompatGeckoDesktop("21.0")}}.<br>
    Удалено в {{CompatGeckoDesktop("22.0")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>isSameNode()</code> {{obsolete_inline}}</td>
   <td>{{CompatNo}}</td>
   <td>Поддерживаемые от {{CompatGeckoDesktop("1.0")}} до {{CompatGeckoDesktop("9.0")}}.<br>
    Удалено в {{CompatGeckoDesktop("10.0")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>isSupported()</code> {{obsolete_inline}}</td>
   <td>{{CompatUnknown}}</td>
   <td>Поддерживаемые от  {{CompatGeckoDesktop("1.0")}} до {{CompatGeckoDesktop("21.0")}}.<br>
    Удалено в {{CompatGeckoDesktop("22.0")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
  </tr>
  <tr>
   <td><code>attributes</code></td>
   <td>{{CompatNo}}</td>
   <td>Поддерживаемые от {{CompatGeckoDesktop("1.0")}} до {{CompatGeckoDesktop("21.0")}}.<br>
    Перемещено к  {{domxref("Element")}} в {{CompatGeckoDesktop("22.0")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Свойство</th>
   <th>Android</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
  </tr>
  <tr>
   <td>Базовая поддержка</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoMobile("1.0")}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
  </tr>
  <tr>
   <td><code>getFeature()</code>{{obsolete_inline}}</td>
   <td>{{CompatNo}}</td>
   <td>Поддерживаемые от  {{CompatGeckoDesktop("1.0")}} до {{CompatGeckoDesktop("6.0")}}.<br>
    Удалено в {{CompatGeckoDesktop("7.0")}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<p>[1] Webkit и Blink неверно не делают <code>Node</code> наследуя от {{domxref("EventTarget")}}.</p>