@jeka-3

Как правильно вывести такой код в innerHtml?

albumTrack.innerHTML = 
  let wrap = document.createElement('div');
  wrap.classList.add('album__item');

  albumTrack.appendChild(wrap);

  let itemAlbumWrap = document.createElement('div');
  itemAlbumWrap.classList.add('album__item__wrap');

  let title = document.createElement('div');
  title.classList.add('album_title');

  wrap.appendChild(title);
  wrap.appendChild(itemAlbumWrap);


  title.innerHTML = `
        Альбом ${arr2[number].albumId}
      `

  let itemAlbum = document.createElement('div');
  itemAlbum.classList.add('album__photo');

  itemAlbumWrap.appendChild(itemAlbum);

  arr2[number].albums.forEach(element => {

    wrap.innerHTML += `
          <div>${element.title}</div>
        `
  });
;
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Ткнуть в доку лучше готового к копипасте ответа
// небольшая функция хелпер, чтоб писать меньше кода:
const appendNewDiv = parent => parent.appendChild(document.createElement('div'));

// создадим основные эллементы
const wrap = appendNewDiv(albumTrack);
const title = appendNewDiv(wrap);
const itemAlbumWrap = appendNewDiv(wrap);
const itemAlbum = appendNewDiv(itemAlbumWrap);

wrap.classList.add('album__item');
title.classList.add('album_title');
itemAlbumWrap.classList.add('album__item__wrap');
itemAlbum.classList.add('album__photo');

// сюда будем складывать элементы, которые должны удалятся при смене number
let elements = [];

// функция, через которую меняем отображаемые данные по number
const renderByNumber = number => {
    const {albumId, albums} = arr2[number];
    elements.forEach(e => wrap.removeChild(e));
    title.textContent = `Альбом ${albumId}`;
    elements = albums.map(album => {
        const e = appendNewDiv(wrap);
        e.textContent = album.title;
        return e;
    });
};

// при изменении number теперь просто вызываем
renderByNumber(number);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽