Я не уверен, какой ответ вы ожидаете, поэтому вот несколько мыслей:
Я думал, что DOM владеет всеми узлами.
Документ владеет каждым узлом. Каждый узел имеет свойство ownerDocument
[MDN] .
Из спецификации :
Интерфейс Document
представляет весь документ HTML или XML. Концептуально он является корнем дерева документа и обеспечивает основной доступ к данным документа.
Поскольку элементы, текстовые узлы, комментарии, инструкции по обработке и т. Д. Не могут существовать вне контекста Document
, интерфейс Document
также содержит фабричные методы, необходимые для создания этих объектов. Созданные объекты Node
имеют атрибут ownerDocument
, который связывает их с Document
, в контексте которого они были созданы.
Как бы вы тогда подключились к DOM?
Существуют различные способы вставки нового узла, например appendChild
[документы] или insertBefore
[документы] .
И последнее, но не менее важное: какова цель отключения узла?
Одним из преимуществ является то, что вы можете создавать сложные поддеревья в автономном режиме , чтобы браузеру не приходилось пересчитывать компоновку каждый раз, когда вы вставляете узел.
Иногда это также полезно для анализа строки HTML. Создав пустую отдельную div
и назначив строку HTML для innerHTML
, вы можете легко анализировать и обрабатывать строку HTML.
Единственное предостережение в том, что document.getElementById
не может найти узлы, которые не являются частью дерева.
Также интересным в этом отношении может быть объяснение свойства Node.parentNode
. В конце концов, Node
, у которого нет родителя, не является частью дерева:
Родитель этого узла. Все узлы, кроме Attr
, Document
, DocumentFragment
, Entity
и Notation
, могут иметь родителя. Однако, если узел только что был создан и еще не добавлен в дерево, или если он был удален из дерева, это null
.