Как вставить элемент перед innerHTML элемента?

Как elems[i] поставить перед innerHTML?
<div class="basic">Hello world!</div>
<div class="basic">Hello world!</div>
<div class="basic">Hello world!</div>

<script>
	var elems = document.querySelectorAll('.basic');
	for(var i = 0; i < elems.length; i++) {
		var divParent = document.createElement('div');
		divParent.className = 'parent';
		divParent.innerHTML = '<b>Важная строка</b>';
		// Этот элемент нужно поставить переде innerHTML
                divParent.insertBefore(elems[i].cloneNode(true), null);
		elems[i].replaceWith(divParent);
	}
</script>


Сейчас порядок элементов:
<div class="parent">
  <b>Важная строка</b>
  <div class="basic">Hello world!</div>
</div>

Нужно:
<div class="parent">
  <div class="basic">Hello world!</div>
  <b>Важная строка</b>
</div>
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Замените

divParent.insertBefore(elems[i].cloneNode(true), null);

на

divParent.prepend(elems[i].cloneNode(true));
// или
divParent.insertAdjacentElement('afterbegin', elems[i].cloneNode(true));

А вообще, можно даже и так сделать:

document.querySelectorAll('.basic').forEach(n => {
  n.insertAdjacentHTML('afterend', `
    <div class="parent">
      ${n.outerHTML}
      <b>Важная строка</b>
    </div>
  `);
  n.remove();
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы