2013-07-27 2 views
1

Если я создаю элемент с помощью document.createElement(), то какой его родитель? Это тело? Извините за такой базовый вопрос, но я попытался использовать JavaScript, чтобы найти родителя, и он возвращает объект, не совсем уверен в этом.Что такое родительский элемент при создании элемента с document.createElement()?

Благодаря

ответ

2

Пока вы не приложите его к чему-то, это ничего (null).

> x = document.createElement("div"); 
<div>​</div>​ 
> x.parentNode 
null 
> document.body.appendChild(x); 
<div>​</div>​ 
> x.parentNode 
<body></body> 

Что касается Вашего комментария, данного массива элементов [x, y, z], которые могут быть или не быть вставлен в DOM, вы можете удалить те, в DOM следующим образом;

var els = [x, y, z]; 

for (var i=0;i<els.length;i++) { 
    if (els[i].parentNode) { 
     els[i].parentNode.removeChild(els[i]); 
    } 
} 

... только как элементы в DOM будет иметь truthy parentNode.

+0

У меня есть массив со многими из этих элементов. Например [x, другой, другой]. Как я могу удалить их, если я не знаю родителя? Или, если я не приложил их к чему-то? – jskidd3

+0

@JoelKidd: Смотрите мое редактирование. Если у вас есть только 'document.createElement''d их, и они не добавили их ни к чему, сборщик мусора JavaScript удалит их после того, как они выйдут из области действия (например, когда ваша функция закончится или когда вы их позорите). – Matt

+0

Большое спасибо за то, что добавил к вашему сообщению. Выберете наилучший ответ, когда таймер будет поднят (и также изменит вопрос). – jskidd3

4

Элемент создается в памяти и не имеет какой-либо из родителей (пока).

Когда вы поместите элемент в DOM с помощью appendChild() или аналогичных методов, у него будет родитель.

JavaScript вернет null, если вы попытаетесь получить доступ к элементу, который не существует, и который включает родителей в элементы, которые существуют только в памяти.

Чтобы получить доступ к элементу, присвоить его переменной, f.ex:

var elem = document.createElement('div'); // elem is now the element reference 

Вам не нужно явно удалять элементы, которые вы не добавляемых к DOM, как они существуют только в памяти и будут уничтожены, как только они больше не будут ссылаться.

Смежные вопросы