Как отрисовать элемент на странице?

отрисовываю карточки товаров, на каждой первой есть эмблема "NEW"
на каждой второй "Хит"
я ничего умнее чем сделать так не придумал, как это сделать по-человечески, подскажите пожалуйста
6234da894def0334040437.png
function createSauseItem () {
  for(let i=0; i <sauseName.length; i++) {
    if(i < 1) {
    let newItem = document.createElement('div');
    newItem.className = ('item sauce__item');
    const itemText = `<div class="item sauce__item">
<b>    <div class="item__promo sause-item__promo">NEW</div></b>
    <img draggable="false"
    src="${(sauseImg[i])}"
    alt="sause"
    class="item__image sauce__image"
    />
    <div class="item__name sauce__name">${(sauseName[i])}</div>
    <div class="item__descr desserts__descr">${(sauseDescr[i])}</div>
    <div class="item__bottom_choise">
    <button class="btnchoise sause__button">Выбрать</button>
    <div class="item__costs sauce__costst" data-price="${(dataPrice[i])}">${(sauseCosts[i])}</div>
    </div>
    </div>`;
    newItem.innerText = itemText;
    sause.insertAdjacentHTML('beforeend', itemText)
    } else if (i < 2 ) {
    let newItem = document.createElement('div');
    newItem.className = ('item sauce__item');
    const itemText = `<div class="item sauce__item">
    <b><div class="item__promo sause-item__promo">ХИТ</div></b>
    <img draggable="false"
    src="${(sauseImg[i])}"
    alt="sause"
    class="item__image sauce__image"
    />
    <div class="item__name sauce__name">${(sauseName[i])}</div>
    <div class="item__descr desserts__descr">${(sauseDescr[i])}</div>
    <div class="item__bottom_choise">
    <button class="btnchoise sause__button">Выбрать</button>
    <div class="item__costs sauce__costst" data-price="${(dataPrice[i])}">${(sauseCosts[i])}</div>
    </div>
    </div>`;
    newItem.innerText = itemText;
    sause.insertAdjacentHTML('beforeend', itemText)
    } else {
      let newItem = document.createElement('div');
    newItem.className = ('item sauce__item');
    const itemText = `<div class="item sauce__item">
    <img draggable="false"
    src="${(sauseImg[i])}"
    alt="sause"
    class="item__image sauce__image"
    />
    <div class="item__name sauce__name">${(sauseName[i])}</div>
    <div class="item__descr desserts__descr">${(sauseDescr[i])}</div>
    <div class="item__bottom_choise">
    <button class="btnchoise sause__button">Выбрать</button>
    <div class="item__costs sauce__costst" data-price="${(dataPrice[i])}">${(sauseCosts[i])}</div>
    </div>
    </div>`;
    newItem.innerText = itemText;
    sause.insertAdjacentHTML('beforeend', itemText)
    }
  }
}
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
m30w
@m30w
~meow
Для начала можно упростить Ваш код:
function createSauseItem() {
    for (let i = 0; i < sauseName.length; i++) {
        let newItem = document.createElement('div');
        newItem.className = ('item sauce__item');
        const itemText = `<div class="item sauce__item">
                          ${i === 0 ? `<b><div class="item__promo sause-item__promo">NEW</div></b>` : i === 1 ? `<b><div class="item__promo sause-item__promo">ХИТ</div></b>` : 0}
                          <img draggable="false"
                          src="${(sauseImg[i])}"
                          alt="sause"
                          class="item__image sauce__image"
                          />
                          <div class="item__name sauce__name">${(sauseName[i])}</div>
                          <div class="item__descr desserts__descr">${(sauseDescr[i])}</div>
                          <div class="item__bottom_choise">
                          <button class="btnchoise sause__button">Выбрать</button>
                          <div class="item__costs sauce__costst" data-price="${(dataPrice[i])}">${(sauseCosts[i])}</div>
                          </div>
                          </div>`;
        newItem.innerText = itemText;
        sause.insertAdjacentHTML('beforeend', itemText)
    }
}


Советую использовать для работы какой-нибудь фреймворк, желательно просто подключить себе VueJS через CDN.

Также можно использовать псевдокласс :nth-child, если изначально создавать карточки с теми же ХИТ/NEW, но display: none; и в :nth-clild1/2 давать display: block соответственному элементу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@bondarenkoIlya
Делаешь массив объектов, перебираешь его с помощью map.
В ютубе вбей "карточка товара js"
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Обычно это делается на стороне сервера. Яваскрипт для этого не нужен.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
05 нояб. 2024, в 19:14
100000 руб./за проект
05 нояб. 2024, в 19:07
12000 руб./за проект
05 нояб. 2024, в 17:38
150000 руб./за проект