@MFNIK

Как обернуть элементы, между триггерных элементов?

Добрый день, допустим есть структура
<div class="blocks">
	<p></p>
	<p></p>
	<p class="start"></p>
	<p></p>
	<p></p>
	<p></p>
	<p></p>
	<p class="end"></p>
	<p></p>
	<p></p>
</div>


Нужно обернуть в отдельный див 4 параграфа которые между Start и end.

Как такое реализовать?
  • Вопрос задан
  • 139 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const wrapper = document.createElement('div');
const start = block.querySelector('.start');
for (let el; !(el = start.nextElementSibling).matches('.end'); wrapper.appendChild(el)) ;
start.insertAdjacentElement('afterend', wrapper);

или

const wrapper = document.createElement('div');
const children = [...block.children];
const iStart = children.findIndex(n => n.classList.contains('start'));
const iEnd = children.findIndex(n => n.classList.contains('end'));
wrapper.append(...children.slice(iStart + 1, iEnd));
children[iStart].after(wrapper);
Ответ написан
Комментировать
hahenty
@hahenty
('•')
wd = document.createElement( 'div' );
document.querySelectorAll( 'p.start ~ p:not( p.end ~ p, p.end )' ).forEach( p => wd.append( p ) );
document.querySelector( '.blocks' ).insertBefore( wd, document.querySelector('.end') );
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
twobomb
@twobomb
let div = document.createElement("div");
let end =document.querySelector(".blocks .end");
end.parentNode.insertBefore(div,end);
for(let i =0;i < 4;i++)
	div.appendChild(document.querySelector(".blocks .start+p"));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект