2016-02-04 9 views
-1

Это отличается от Remove dom element without knowing its parent?, потому что у их элемента есть parentNode.Удаленный элемент, который не имеет родителя

Я знаю, как удалить элемент через его parentNode, но если я создам новый элемент, он вообще не имеет parentNode.

Итак,
a) Как удалить этот элемент?
b) Нужно ли мне вообще? Или он очищается, как только последняя ссылка на него исчезла?

Контекст: Я пытаюсь написать несколько автоматических тестов для моего кода JavaScript. Я использую Mocha из браузера, и я хочу проверить, вставлены ли дочерние элементы в данный родитель. Я создаю родителя на лету перед каждым тестом, но думал, что мне не нужно добавлять его в документ. Но я хочу убедиться, что у меня нет большого списка ненастроенных узлов, висящих вокруг.

var element = document.createElement('div'); 
 

 
console.log(element); // The div 
 

 
console.log(element.parentNode); // null 
 

 
element.parentNode.removeChild(element); // "Cannot read property 'removeChild' of null"

+2

Пока элемент не прикреплен к какому-либо документу, это в основном немного больше, чем простой объект JS. Вы можете отбросить его с помощью 'element = null;'. – Boldewyn

+1

должна быть функция 'batman()' для этого –

+0

@Boldewyn Это то, что я подозревал, но я не мог найти доказательства. Я подумал, может быть, потому, что он был создан с помощью document.CreateElement, который также был добавлен в список элементов документа. – GolezTrol

ответ

1

что вы подразумеваете под "удалить" это. Когда у него есть родительский узел, который означает, что вы добавляете его в DOM. Вы удаляете его, это означает, что вы удаляете его из DOM. Поскольку вы не добавили его вообще, это всего лишь

"<div></div>" 

, если вы заносили в журнал этот элемент. Все, что вам нужно сделать, это:

element = null; 

или ничего не делать.

0

Хотя элемент не был добавлен в DOM, он ничем не отличается от любого другого объекта Javascript и будет собираться мусором, как только последняя ссылка исчезнет.

Либо перепишите ссылку, либо просто подождите, пока она не выйдет из сферы действия.