【问题标题】:Can't remove an Item from LocalStorage无法从 LocalStorage 中删除项目
【发布时间】:2021-06-23 18:51:21
【问题描述】:

大家好,我创建了网站的电子商务部分,请您帮我从本地存储中删除元素,我不想创建多个函数来删除每个元素,但仍然没有任何效果,请帮帮我

p>
let pList = document.getElementById("productList")

//Espresso

const addEspresso = () => {
  var Espresso, esp, eObj;
  Espresso = {
    name: "Espresso",
    type: "strong",
    imgSrc: "images/c7.png"
  };

  localStorage.setItem("Espresso", JSON.stringify(Espresso));

  esp = localStorage.getItem("Espresso");
  eObj = JSON.parse(esp);

  let htmlEspresso = "";
  htmlEspresso += `
         <div class="productDiv">
         <p>${eObj.name}</p> 
         <p>${eObj.type}</p>
         <img src="${eObj.imgSrc}">
         <button class="btn-remove">REMOVE</button>
         </div>
         `

  document.getElementById("productList").innerHTML += htmlEspresso
}
document.addEventListener("click", function(e) {
  var btnR = document.getElementsByClassName("btn-remove");
  if (e.target.classList.contains("btn-remove")) {
    e.target.closest(".productDiv").remove();
    //localStorage.removeItem(e.target.parentElement) - This does not work,I do not understand what to do with it
  }
})

【问题讨论】:

  • "Espresso" != e.target.parentElement

标签: javascript arrays json local-storage


【解决方案1】:

.parentElement 将返回 DOM 元素而不是文本。您可以在它之后进行一些解析或检查其中的特定 p 元素。

您的第一个 p 孩子将持有文本 Espresso。您可以使用 .textContent 获取它。这是您保存在存储中的密钥。

localStorage.removeItem(e.target.parentElement.querySelector('p').textContent);

【讨论】:

  • 非常感谢!它对我有用,但你知道如何在 localStorage 中添加多个元素吗?例如,我想为对象“数量”添加一个属性。我该怎么做让它在每次点击时附加 +1,但产品不会再次出现?
  • 您将不得不修改 getItem 然后再次 setItem。这是唯一的方法。
猜你喜欢
  • 2013-10-17
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 2021-06-13
  • 2022-01-05
相关资源
最近更新 更多