Skip to content

Commit adb79bf

Browse files
authored
Merge pull request #1667 from Rnbsov/patch-100
Обновление статьи "Свойства узлов: тип, тег и содержимое"
2 parents 443bfc6 + e296a52 commit adb79bf

File tree

2 files changed

+36
-8
lines changed

2 files changed

+36
-8
lines changed

2-ui/1-document/04-searching-elements-dom/article.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
# Поиск: getElement*, querySelector*
23

34
Свойства навигации по DOM хороши, когда элементы расположены рядом. А что, если нет? Как получить произвольный элемент страницы?
@@ -113,6 +114,7 @@
113114
Иначе говоря, результат такой же, как при вызове `elem.querySelectorAll(css)[0]`, но он сначала найдёт *все* элементы, а потом возьмёт первый, в то время как `elem.querySelector` найдёт только первый и остановится. Это быстрее, кроме того, его короче писать.
114115

115116
## matches
117+
116118
Предыдущие методы искали по DOM.
117119

118120
Метод [elem.matches(css)](https://dom.spec.whatwg.org/#dom-element-matches) ничего не ищет, а проверяет, удовлетворяет ли `elem` CSS-селектору, и возвращает `true` или `false`.

2-ui/1-document/05-basic-dom-node-properties/article.md

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
# Свойства узлов: тип, тег и содержимое
23

34
Теперь давайте более внимательно взглянем на DOM-узлы.
@@ -18,16 +19,41 @@
1819

1920
Существуют следующие классы:
2021

21-
- [EventTarget](https://dom.spec.whatwg.org/#eventtarget) -- это корневой "абстрактный" класс. Объекты этого класса никогда не создаются. Он служит основой, благодаря которой все DOM-узлы поддерживают так называемые "события", о которых мы поговорим позже.
22-
- [Node](https://dom.spec.whatwg.org/#interface-node) -- также является "абстрактным" классом, и служит основой для DOM-узлов. Он обеспечивает базовую функциональность: `parentNode`, `nextSibling`, `childNodes` и т.д. (это геттеры). Объекты класса `Node` никогда не создаются. Но есть определённые классы узлов, которые наследуют от него: `Text` -- для текстовых узлов, `Element` -- для узлов-элементов и более экзотический `Comment` -- для узлов-комментариев.
23-
- [Element](https://dom.spec.whatwg.org/#interface-element) -- это базовый класс для DOM-элементов. Он обеспечивает навигацию на уровне элементов: `nextElementSibling`, `children` и методы поиска: `getElementsByTagName`, `querySelector`. Браузер поддерживает не только HTML, но также XML и SVG. Класс Element служит базой для следующих классов: `SVGElement`, `XMLElement` и `HTMLElement`.
24-
- [HTMLElement](https://html.spec.whatwg.org/multipage/dom.html#htmlelement) -- является базовым классом для всех остальных HTML-элементов. От него наследуют конкретные элементы:
22+
- [EventTarget](https://dom.spec.whatwg.org/#eventtarget) -- это корневой "абстрактный" класс для всего.
23+
24+
Объекты этого класса никогда не создаются. Он служит основой, благодаря которой все DOM-узлы поддерживают так называемые "события", о которых мы поговорим позже.
25+
26+
- [Node](https://dom.spec.whatwg.org/#interface-node) -- также является "абстрактным" классом, и служит основой для DOM-узлов.
27+
28+
Он обеспечивает базовую функциональность: `parentNode`, `nextSibling`, `childNodes` и т.д. (это геттеры). Объекты класса `Node` никогда не создаются. Но есть определённые классы узлов, которые наследуются от него (и следовательно наследуют функционал `Node`).
29+
30+
- [Document](https://dom.spec.whatwg.org/#interface-document), по историческим причинам часто наследуется `HTMLDocument` (хотя последняя спецификация этого не навязывает) -- это документ в целом.
31+
32+
Глобальный объект `document` принадлежит именно к этому классу. Он служит точкой входа в DOM.
33+
34+
- [CharacterData](https://dom.spec.whatwg.org/#interface-characterdata) -- "абстрактный" класс. Вот, кем он наследуется:
35+
- [Text](https://dom.spec.whatwg.org/#interface-text) -- класс, соответствующий тексту внутри элементов. Например, `Hello` в `<p>Hello</p>`.
36+
- [Comment](https://dom.spec.whatwg.org/#interface-comment) -- класс для комментариев. Они не отображаются, но каждый комментарий становится членом DOM.
37+
38+
- [Element](https://dom.spec.whatwg.org/#interface-element) -- это базовый класс для DOM-элементов.
39+
40+
Он обеспечивает навигацию на уровне элементов: `nextElementSibling`, `children`.
41+
А также и методы поиска элементов: `getElementsByTagName`, `querySelector`.
42+
43+
Браузер поддерживает не только HTML, но также XML и SVG. Таким образом, класс `Element` служит основой для более специфичных классов: `SVGElement`, `XmlElement` (они нам здесь не нужны) и `HTMLElement`.
44+
45+
- И наконец, [HTMLElement](https://html.spec.whatwg.org/multipage/dom.html#htmlelement) является базовым классом для всех остальных HTML-элементов. Мы будем работать с ним большую часть времени.
46+
47+
От него наследуются конкретные элементы:
48+
2549
- [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) -- класс для тега `<input>`,
2650
- [HTMLBodyElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlbodyelement) -- класс для тега `<body>`,
2751
- [HTMLAnchorElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlanchorelement) -- класс для тега `<a>`,
28-
- ...и т.д, каждому тегу соответствует свой класс, который предоставляет определённые свойства и методы.
52+
- ...и т.д.
53+
54+
Также существует множество других тегов со своими собственными классами, которые могут иметь определенные свойства и методы, в то время как некоторые элементы, такие как `<span>`, `<section>` и `<article>`, не имеют каких-либо определенных свойств, поэтому они являются экземплярами класса `HTMLElement`.
2955

30-
Таким образом, полный набор свойств и методов данного узла собирается в результате наследования.
56+
Таким образом, полный набор свойств и методов данного узла является результатом цепочки наследования.
3157

3258
Рассмотрим DOM-объект для тега `<input>`. Он принадлежит классу [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement).
3359

@@ -131,10 +157,10 @@ interface HTMLInputElement: HTMLElement {
131157
<script>
132158
let elem = document.body;
133159
134-
// посмотрим что это?
160+
// давайте разберёмся: какой тип узла находится в elem?
135161
alert(elem.nodeType); // 1 => элемент
136162
137-
// и первый потомок...
163+
// и его первый потомок...
138164
alert(elem.firstChild.nodeType); // 3 => текст
139165
140166
// для объекта document значение типа -- 9

0 commit comments

Comments
 (0)