Показать сообщение отдельно
  #14 (permalink)  
Старый 21.01.2020, 15:34
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от 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>
Ответить с цитированием