Элемент, созданный из документа, но не добавленный: нужно удалить его явно?

1

Мне нужно создать временный элемент DOM, который не зависит от моего основного документа. Я делаю это, используя мой основной документ для создания элемента, но не добавляя его к дереву.

Element temporaryParentElement = document.createElement(PERMISSIONSET);

Он используется для создания таблиц в диалоговом окне. После закрытия диалогового окна мне больше не нужен этот элемент, поэтому я попытался его удалить:

document.removeChild(temporaryParentElement);

Это привело к исключению:

org.w3c.dom.DOMException: NOT_FOUND_ERR: An attempt is made to reference a node in a context where it does not exist.

Если я правильно понимаю, созданный узел не может быть удален, если он не является частью дерева. Нужно ли добавлять его к дереву, а затем вызывать метод remove? Или сборщик мусора заботится об этом элементе?

Теги:
dom
jaxp

1 ответ

1
Лучший ответ

Создание элемента отличается от добавления или удаления его в существующее дерево. Вы используете ссылку на этот document для создания элемента, но затем добавляете его к другому элементу. Вы можете удалить его, используя ссылку этого элемента.

Метод removeChild удаляет элемент из дерева, где он был добавлен до (с appendChild или проанализирован, когда документ был прочитан).

Вы должны найти элемент, который представляет родительский элемент этого элемента, чтобы удалить его. Предположим, что родительский dialog. Вы будете использовать:

dialog.removeChild(temporaryParentElement);
  • 0
    Элемент не имеет родителя. temporaryParentElement.getParentNode() родительский элемент.getParentNode temporaryParentElement.getParentNode() возвращает ноль.
  • 0
    Если вы не добавили элемент в какое-либо дерево, вам не нужно удалять его из него.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню