Замена элемента со всеми потрохами
Есть ли универсальный способ заменить существующий DOM элемент, вместе с самим тегом и параметрами по аналогии с replaceChild(), но без предварительного создания средствами document.createElement(), то есть новый эелемент перед заменой имеется только в виде текстовой переменной (html).
спасибо. |
Пока только вот такое в голову пришло.
function replace_element_by_html(target, html)
{
var tmpNode = document.createElement('div');
tmpNode.innerHTML = html;
for (key in tmpNode.childNodes)
{
target.parentNode.insertBefore(tmpNode.childNodes[key].cloneNode(true), target);
}
target.parentNode.removeChild(target);
}
Не очень конечно с точки зрения производительности. |
Попробуй так:
function replace_element_by_html(ele, html){
var newEle=ele.cloneNode(false);
newEle.innerHTML=html;
ele.parentNode.insertBefore(newEle, ele);
ele.parentNode.removeChild(ele);
}
|
Цитата:
|
Цитата:
|
Цитата:
переписывать не newEle, а в цикле все его содержимое. Но это все равно противоречит ТС: Цитата:
|
Цитата:
Всё же неважно, решение найденно. Можно также делать cloneNode родительского элемента и манипулировать с ним, но в некоторых случаях это будет накладнее по ресурсам. P.S. такой вопрос: может существует стандартная функция которая переводит html в коллекцию элементов, никто не в курсе ? |
Цитата:
|
Цитата:
function html2hodes(h){
var newEl=document.createElement('span');
newEl.innerHTML=h;
return newEl.childNodes;
}
Однако я голову уже сломал размышляя, почему нельзя использовать createElement? Что в нём такого запретного? |
Цитата:
по теме можно еще DocumentFragment попробовать заюзать |
| Часовой пояс GMT +3, время: 08:41. |