@ForSureN1
frontend dev

Почему выводится только последняя карточка товара?

Добрый день. Имеется корзина с товарами, для отправки в бэк, эти карточки мне нужно запихнуть в textarea в виде текста, я в принципе проблему решил, карточка попадает в textarea, но только последняя из всех имеющихся. а нужно чтобы добавлялись все.
function requestTable() {
    const cart = JSON.parse(localStorage.getItem('cart')) || {};
    const ids = Object.keys(cart);
    const renderTable = () => {
      for (let i in ids) {
        const keys = ids[i];
        const articul = cart[keys].articul;
        const name = cart[keys].name;
        const quantity = cart[keys].quantity;
        const totalprice = cart[keys].totalprice;
        console.log(name)
        console.log(quantity)
        console.log(totalprice)
        tableItem = `
        <tr><td>${articul}</td></tr>
        <tr><td>${name}</td></tr>
        <tr><td>${quantity}</td></tr>
        <tr><td>${totalprice}</td></tr>
        `
        textarea.innerHTML = '<table>' + '<tbody>' + tableItem + '<tbody>' + '</table>';
      }
    }
    renderTable();
  }


6142d89820f32239580479.jpeg

вызов этой функции я подвесил на кнопки + и - , а так же на иконку корзины.
ну и соответственно эта функция вызывается самостоятельно если находит элемент таблицы на странице с корзиной.
В консоль если выводить переменную, то она выводит все карточки которые имеются в корзине
6142d9597502b575665779.jpeg
Так же при удалении товара из корзины, в textarea заменяется последним товаром в корзине
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
@Asokr
В цикле соберите товары
tableItem += `
        <tr><td>${articul}</td></tr>
        <tr><td>${name}</td></tr>
        <tr><td>${quantity}</td></tr>
        <tr><td>${totalprice}</td></tr>
        `

за циклом добавьте обертку
textarea.innerHTML = '<table>' + '<tbody>' + tableItem + '<tbody>' + '</table>';
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@alekcena
Нелинейный наставник
textarea.innerHTML = '<table>' + '<tbody>' + tableItem + '<tbody>' + '</table>';
// И так на каждой итерации
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что вы так в коде написали.
У вас содержимое textarea на каждой итерации цикла полностью переписывается. В результате остаётся только то, что было записано в последней итерации.
Ответ написан
Ваш ответ на вопрос

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

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