Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   удаление элемента (https://javascript.ru/forum/dom-window/45586-udalenie-ehlementa.html)

BratKilla 07.03.2014 01:58

удаление элемента
 
Создаю элемент через createElement, нахожу родителя в dom через appendChild. В моём случае этот элемент был присвоен 3 переменной в массиве, т.е. [2] если я с помощью splice вырежу эту 2-ку, и с помощью removeChild удалю из dom этот элемент, то он удалится полностью?

danik.js 07.03.2014 02:25

Скорее всего да. Элемент будет существовать пока есть хоть одна действующая переменная, ссылающаяся на него. Ну и конечно если он в DOM-е, то он тоже "существует"

BratKilla 07.03.2014 02:30

спасибо, в таком случае не будет лишней нагрузки на память...

kotamirov 09.03.2014 11:12

Цитата:

Сообщение от BratKilla (Сообщение 301520)
спасибо, в таком случае не будет лишней нагрузки на память...

А ты проверь его на существование, достаточно сравнить его с null!

danik.js 09.03.2014 11:17

Цитата:

Сообщение от kotamirov
А ты проверь его на существование, достаточно сравнить его с null!

Неа :no:
Пока есть переменная, ссылающаяся на объект - объект будет существовать :) Не будет ни одной переменной - сборщик мусора удалит объект из памяти. Но тогда и с null нечего будет сравнивать )

kotamirov 09.03.2014 12:20

Цитата:

Сообщение от danik.js (Сообщение 301873)
Неа :no:
Пока есть переменная, ссылающаяся на объект - объект будет существовать :) Не будет ни одной переменной - сборщик мусора удалит объект из памяти. Но тогда и с null нечего будет сравнивать )

undefined- элемент существует но не определен
null- элемент не существует

dmitriymar 09.03.2014 14:05

Цитата:

Сообщение от kotamirov
undefined- элемент существует но не определен
null- элемент не существует

var a;
alert(a)
alert(b == null)


если имелось в виду null нет в дереве, ничего не мешает ему быть не в DOM и занимать память

kotamirov 09.03.2014 14:35

А b = undefined
var b;
if(b == null)alert(b);

danik.js 09.03.2014 15:31

kotamirov, учи матчасть, не позорься.

melky 09.03.2014 15:52

Посмотреть можно в более-менее продвинутых инструментах разработки, что остается в памяти, а что удаляется :


var a_test_elems = ['a', 'div'].map(function (tag) { return document.createElement(tag); });

	window.a_test_div = a_test_elems[1];

	a_test_elems = null;


div остался в памяти, например:


Часовой пояс GMT +3, время: 15:24.