Jump to content
  • 0

Удаление дочерних элементов


rome.ro
 Share

Question

Здравствуйте, товарищи!!!

Есть следующая ситуация на AJAX - есть у меня HTML-документ, а в ней тег <DIV>...</DIV>, в который с помошью appendChild() вставляется HTML-содержимое(ну - через JavaScript, ясно). Какой функцией удалить ВСЕ дочерние элементы из данного <DIV>...</DIV> тега? Т.е., я понимаю, что есть функция remove.Child(), а есть-ли такая, чтобы не нужно было указывать какой именно дочерний элемент удалять, а чтобы сразу ВСЕ удаляла?

Впринципе, я что-то Нагуглил по этому поводу, но там используются циклы и массивы + remove.Child(), но это немного не то, что мне нужно.

Спасибо.

Edited by rome.ro
Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

Мдаааа, оскуднел ресурс на толковые советы.

Удалять элементы рекурсивно, это надо было додуматься!

	if ( !document.createRange ) {
node.innerHTML = "";
}
else
{
var tmpRange = document.createRange();

tmpRange.selectNodeContents(node);
tmpRange.deleteContents();

tmpRange.detach();
}

Link to comment
Share on other sites

  • 0
И будут занимать память, как минимум.

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

Придумали тоже. Объектов нет, а аобработчики остались, память занимают. Не ну в эксплорере может так оно и есть, но в нормальных браузерах не стоит беспокоиться.

Link to comment
Share on other sites

  • 0
И будут занимать память, как минимум.

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

Сколько памяти? Пару байт? К чему крохоборство? Браузер может течь в несколько раз больше из-за неправильного алгоритма самого браузера, чем из-за обработчика, который должен удаляться при удалении его таргета.

Не придумывайте себе "проблемы". Лучше займитесь глобальными вещами, например изучайте алгоритмы или улучшайте свои.

Link to comment
Share on other sites

  • 0
if ( !document.createRange ) {			}	else	{		var tmpRange = document.createRange();   			tmpRange.selectNodeContents(node);		tmpRange.deleteContents();   			tmpRange.detach();	}

Сейчас хром на конструкцию

tmpRange.detach();
ругается

'Range.detach' is now a no-op, as per DOM (http://dom.spec.whatwg.org/#dom-range-detach).
Не настолько хорошо владею английским, что там про это пишут?

И вообще, имеет ли хоть какой то смысл в современных браузерах заморачиваться с

document.createRange()
или достаточно простого

node.innerHTML = ""
Link to comment
Share on other sites

  • 0
И вообще, имеет ли хоть какой то смысл в современных браузерах заморачиваться с document.createRange() или достаточно простого node.innerHTML = ""

Имеет в зависимости от задачи.

 

К примеру он вам понадобится если захотите написать свой визуальный редактор.

Link to comment
Share on other sites

  • 0

Имеет в зависимости от задачи.

К примеру он вам понадобится если захотите написать свой визуальный редактор.

Ну, тема называется «Удаление дочерних элементов» Edited by Ramzzes
Link to comment
Share on other sites

  • 0
Ну, тема называется «Удаление дочерних элементов»

 

Я ответил на тот вопрос который процитировал =)

 

обнулять через innerHTML вполне достаточно, но можно еще через цикл типо

var element = document.getElementsByTagName('body')[0];while(element && element.firstChild) {    element.removeChild(element.firstChild);}

и до кучи можете приписать удаление обработчиков туда же.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy