Показать сообщение отдельно
  #18 (permalink)  
Старый 04.06.2018, 18:39
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от xShift Посмотреть сообщение
ruslan_mart, а unwrap/wrap это не маньячно?

К примеру:

for(let i of e) {

			let parent = i.parentElement;
		
			while (i.firstChild) {
				parent.insertBefore(i.firstChild, i);
			}

			parent.removeChild(i);
		}


против

i.outerHTML = '<div class="wrapper">'+ i.outerHTML +'</div>';


Я просто как-то элегантнее не видел.
вот, способ с сохранением объектов-узлов:
var elem = document.querySelector('#id1');
var range = document.createRange();
range.selectNodeContents(elem);
elem.parentNode.replaceChild(range.extractContents(), elem);


это unwrap, то что у тебя в цикле. Собственно, вытаскиваем весь контент из элемента, и заменяем элемент на него. Два изменения дома - вытаскивание контента и замена.

wrap аналогично.

outerHTML/innerHTML тут нафиг не нужен.

матчасцъ - https://learn.javascript.ru/range-textrange-selection
Ответить с цитированием