【问题标题】:How do I removeItem() from localStorage?如何从 localStorage 中删除项目()?
【发布时间】:2020-08-14 23:49:09
【问题描述】:

您好,我是 JavaScript 新手,我正在尝试编写购物车代码。

我在 “productsInCart” 键下的购物车中有 3 个产品。我只希望删除单击删除按钮的行的产品,但是当我按下删除按钮时,购物车中的所有 3 个项目都会被删除。有什么解决办法吗?我猜是 localStorage.removeItem("productsInCart") 应该更改为删除特定项目,但我不知道该怎么做。

我添加了item.inCart = 0;,以便我可以更新localStorage 以显示购物车中正确的商品总数(cartNumbers) 和totalCost。这再次将所有 3 个产品更改为 0“inCart”,而不是用户想要的特定产品。

【问题讨论】:

标签: javascript json local-storage shopping-cart


【解决方案1】:

根据我从您的问题中得到的信息:

你需要有一个项目的集合,也许是一个 JS 数组,比如:

const items = [{}, {}, {}];

这个数组的长度也会给你项目的数量,所以你不必显式地维护它。

你需要在localStorage中设置这个数组为:

localStorage.setItem('itemList', JSON.stringify(items));

当您单击删除时,您需要从列表中删除该项目。了解从数组中删除元素的方法(popspliceslice 等)

items.splice(index, 1);

之后您需要在本地存储中重新设置更新的项目。

在这里阅读更多:https://www.w3schools.com/jsref/jsref_splice.asp

【讨论】:

    【解决方案2】:

    您应该从数组中删除您想要在 JavaScript 代码中使用的项目(例如,使用 splice 命令),然后在您的 localStorage 中更新 removeItem 数组,而不是删除它。

    因此,由于您只能将数据以文本格式存储在 localStorage 中,因此您需要在进行任何更新时来回解析它(所以JSON.stringify & JSON.parse

    【讨论】:

      【解决方案3】:

      您不能直接修改 localStorage 数据。您应该替换数据。 您可以做的是,当您删除一个项目时,获取数组中的项目索引,然后读取 localStorage 数据,从数组中删除该项目,然后再次将数据保存到 localStorage。

      var existingItems = JSON.JSON.parse(localStorage.getItem('cartItems'))
      var itemIndex = 1 // index of item to be removed
      
      existingItems.splice(itemIndex, 1)
      
      localStorage.setItem('cartItems', JSON.stringify(existingItems));

      【讨论】:

        猜你喜欢
        • 2013-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-07
        相关资源
        最近更新 更多