Вариант 1
function removebyindex(){
var node = document.getElementById('papa');
var childs = node.childNodes;
for (i=0; i<childs.length; i++){
if(childs[i].nodeType==1){
node.removeChild(childs[i]);
}
}
}
Вариант самый логичный, получить елемент у которого надо убрать дочерние узлы, получить масив дочерних узлов а потом их удалить.
Вариант 2
function removebyfirst(){
var node = document.getElementById('papa');
while(node.firstChild){
node.removeChild(node.firstChild);
}
}
Еще короче и еще быстрее, удаляй первого пока на его место будет некому встать. Лучше чем первый, так как запись короче, но тем не менее по скорости они одинаковы, хотя память чуть меньше загружена
Вариант 3
Сразу надо оговориться что подходит он не для любого случая.
function removebypreplace(){
var papa = document.getElementById('papa');
var new_papa = document.createElement(papa.nodeName);
new_papa.id = papa.id;
papa.parentNode.replaceChild(new_papa, papa);
}
Создай элемент похожий на наш и замени. В чем приемущество, быстрота и еще меньшее использование памяти.
Вот небольшая сводная таблица
| Функция
| Память
| Время
|
| removebyindex |
93.03% |
1.482ms |
| removebyfirst |
92.91% |
1.403ms |
| removebypreplace |
89.09% |
0.874ms |