Сообщение от ksa
|
Там говорится о "дереве"... Что само является скорее "понятием", чем определением.
Т.о. в наших рассуждениях все упрется в то, как мы покажем "свое" дерево.
Например, если дерево от дерева мы будем отличать их "корнями" - За корень можно взять весь документ, что загружен сейчас в окно браузера...
Т.о. в этом "дереве" не должно быть двух одинаковых ИД.
|
Стоит отметить, что тут речь идёт о построенном DOM, а не о исходном коде, на основе которого строится DOM. «
Корнями» являются экземпляры классов Document, (от которого наследуют HTMLDocument и XMLDocument), DocumentFragment (от которого наследует класс ShadowRoot), а «
деревями» — любой элемент, экземпляр класса Element, например, вставленные в DOM <html>, <body>, <a>, <svg>, ваши собственные элементы и пр. — это всё «деревья», по которым вы можете путешествовать при помощи свойств parentNode, childNodes, previousSibling, nextSibling и пр. А те узлы DOM, которые наследуют от DocumentType и CharacterData (от которого в частности наследуют Text и Comment) можно назвать «
листьями», поскольку они не могут содержать других узлов DOM.
Сообщение от ksa
|
Т.е. мне "ближе" вот такое определение ИД
Цитата:
|
Описание
Задает стилевой идентификатор — уникальное имя элемента, которое используется для изменения его стиля и обращения к нему через скрипты. Идентификатор в коде документа должен быть в единственном экземпляре, иными словами, встречаться только один раз.
|
|
Это совершенно неверное описание (учитывая то, что я вам написал выше), поскольку следующий код совершенно правилен (каждое дерево до самого корня содержит элементы без повторяющихся id) с точки зрения спецификации...
<template>
<p id="a">a1</p>
</template>
<template>
<p id="a">a2</p>
</template>
<p id="a">a3</p>
<script>
const ps = document.querySelectorAll("p#a");
alert(ps.length); // выводит «1»
</script>