javascript - 如何使用 localStorage 将商品保存到购物车

标签 javascript jquery html

所以我有一个像这样的表:

<table border="1">
<tbody>
    <tr>
        <th> Book Title </th>
        <th> Author </th>
        <th> Book </th>
    </tr>
    <tr>
        <td id= Book_Title>Gone </td>
        <td id= Author>Micheal Grant</td>
        <td><button id="AddToCart" onclick="addToLocalStorage()">Add To Cart</button> </td>
    </tr>
    <tr>
        <td id= Book_Title>The Knife of never letting go</td>
        <td id= Author>Ryan Howard</td>
        <td><button id="AddToCart" onclick="addToLocalStorage()">Add To Cart</button> </td>
    </tr>
</tbody>

我的目标是单击按钮即可将特定行的数据保存到本地存储。但是,由于每行的 id 都相同,因此只会保存 id 的第一个实例。我想知道如何使用 jqueryclosest() 来解决我的问题。或者即使有任何其他解决方案可以解决我的问题。

最佳答案

为了保存表行中包含的数据...例如书名和作者,我建议您使用一些objects包含在 array 中.

那么你必须stringify使用前localStorage .

当您想要检索存储的数据时,您必须 parse它返回到对象数组。

遗憾的是,SO 片段不喜欢使用 localStorage...所以我的工作演示位于 CodePen .

相关代码如下:

// The "add to cart" handler.
$("table").on("click", ".AddToCart", function(e){

  // Get previous storage, if any.
  var storage = JSON.parse(localStorage.getItem("cart"));
  if(storage==null){
    storage = [];
  }

  var row = $(this).closest("tr");
  var title = row.find("td").eq(0).text().trim();
  var author = row.find("td").eq(1).text().trim();

  // Create an object to store.
  var data = {author:author,title:title};
  storage.push(data);

  // Store it.
  localStorage.setItem("cart",JSON.stringify(storage));
});

关于javascript - 如何使用 localStorage 将商品保存到购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50311972/

相关文章:

jquery - 如何将 Bootstrap 工具提示应用于 ajax 加载的内容?

html - 在CSS中为不同的视频添加视频源

javascript - polymer 的双向数据绑定(bind)在元素的子属性值中不起作用

javascript - 将数字插入数组

javascript - 每次在输入中输入新字符时更新查询

javascript - 在 FormData 中发送整数

php - POST undefined variable ,但 REQUEST 有效

javascript - 将值字符串转换为 Javascript 数组的优雅方法?

javascript - 径向进度条

javascript - Ajax 插入的内容在 DOM 中无法访问