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

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

отрисовываю карточки товаров, на каждой первой есть эмблема "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)
    }
  }
}
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 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
Обычно это делается на стороне сервера. Яваскрипт для этого не нужен.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
23 дек. 2024, в 11:07
10000 руб./за проект
23 дек. 2024, в 10:43
5000 руб./за проект
23 дек. 2024, в 10:32
2000 руб./за проект