Замена элемента со всеми потрохами
Есть ли универсальный способ заменить существующий 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, время: 16:10. |