Задать вопрос
@t256e

Как через цикл вложить элементы DOM один в другой?

я чет туплю и не могу понять как это сделать?


то есть нужно чтоб внутри .main лежал div, внутри которого был p, внутри которого был span. У меня сейчас все на одном ровне получается
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 3
RAX7
@RAX7
var arr = ['div', 'p', 'span'];
var main = document.querySelector('.main');

for (let i = 0, container = main; i < arr.length; i++) {
  let el = document.createElement(arr[i]);
  container.append(el);
  container = el;
}
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
Собираем и вставляем разметку:

// заменяем содержимое элемента main
main.innerHTML = arr.reduceRight(
  (content, tag) => `<${tag}>${content}</${tag}>`,
  ''
);

// или, дополняем его
main.insertAdjacentHTML(
  'beforeend',
  (function next(i, tag = arr[i] ?? '') {
    return tag && `<${tag}>${next(-~i)}</${tag}>`;
  })(0)
);

Или создаём элементы напрямую:

// замена контента
main.replaceChildren(...arr.reduceRight((content, tag) => {
  const el = document.createElement(tag);
  el.append(...content);
  return [ el ];
}, []));

// или, добавление
arr.reduce((el, tag) => (
  el.appendChild(document.createElement(tag)),
  el.lastChild
), main);
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно изнутри наружу идти:
создавать очередной элемент и вкладывать в него предыдущий.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы