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

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

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


то есть нужно чтоб внутри .main лежал div, внутри которого был p, внутри которого был span. У меня сейчас все на одном ровне получается
  • Вопрос задан
  • 109 просмотров
Подписаться 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.innerHTML = arr.reduceRight((content, tag) => `<${tag}>${content}</${tag}>`, '');

// или

main.append(arr.reduceRight((content, tag) => {
  const el = document.createElement(tag);
  el.append(content);
  return el;
}, ''));

И наоборот:

main.insertAdjacentHTML('beforeend', (function next(i) {
  return arr[i] ? `<${arr[i]}>${next(-~i)}</${arr[i]}>` : '';
})(0));

// или

arr.forEach(function(tag) {
  this[0].appendChild(document.createElement(tag));
  this[0] = this[0].lastChild;
}, [ main ]);
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно изнутри наружу идти:
создавать очередной элемент и вкладывать в него предыдущий.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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