从localStorage升级数据

问题描述 投票:0回答:1

当我第一次单击我的商品时,它们的详细信息(例如名称,价格和金额)存储在本地存储中,然后使用存储的详细信息创建一个元素。

其他时候单击我的项目时,它们的数量会在本地存储中增加,但是此数量未正确显示在元素中,并且对于所有这些元素,数量都会显示在第一个元素onlz上

let x = 0;
(function() {
  items.forEach(function(btn) {
    btn.addEventListener('click', function(event) {
      // console.log(event.target)
      let names = localStorage.getItem('name');
      const exists = !!names;
      names = exists ? JSON.parse(names) : [];
      let prices = exists ? JSON.parse(localStorage.getItem('price')) : [];
      let numbers = exists ? JSON.parse(localStorage.getItem('number')) : [];
      let imgs = exists ? JSON.parse(localStorage.getItem('imgs')) : [];
      var name =
        event.target.parentElement.parentElement.parentElement.parentElement.children[1].children[0].textContent;
      const nI = names.indexOf(name);
      if (nI === -1) {
        var img =
          event.target.parentElement.parentElement.parentElement.children[0].src;
        var pos = img.indexOf('imgs') - 1;
        var img = img.slice(pos);
        imgs.push(img);
        localStorage.setItem('imgs', JSON.stringify(imgs));
        names.push(name);
        localStorage.setItem('name', JSON.stringify(names));
        var price =
          event.target.parentElement.parentElement.parentElement.parentElement.children[1].children[2].textContent;
        var price = parseInt(price);
        prices.push(price);
        localStorage.setItem('price', JSON.stringify(prices));
        numbers.push(1);

        var creatElement = document.createElement('div');
        creatElement.classList.add('items-in-card');
        creatElement.innerHTML = `
                    <div style="flex-grow: 4;">
                        <img src="${imgs[x]}" style="border-radius: 40%;" title="${names[x]}">
                    </div>
                    <div style="flex-grow: 2;font-size: 25px;">${prices[x]} $</div>
                    <i class="fas fa-minus"></i><span class="xx" style="flex-grow: 2; font-size: 20px;">${numbers[x]}</span><i class="fas fa-plus"></i>
                    <div class="delete-item" style="flex-grow: 2;"><i class="fas fa-trash"></i></div>
                `;
        const shopBox = document.getElementById('my-items');
        const total = document.querySelector('.total');
        shopBox.insertBefore(creatElement, total);
        x++;
      } else {
        numbers[nI]++;
        document.querySelector('.xx').textContent = numbers[nI];
      }
      localStorage.setItem('number', JSON.stringify(numbers));
    });
  });
})();

“显示元素”

javascript html
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.