使用JavaScript在localStorage中存储多个ID

时间:2016-04-24 19:25:41

标签: javascript

我想为我的网站添加收藏夹功能。我使用的技术是html,css,javascript和json。我通过ajax加载json文件。用户可以搜索设备并将该设备添加到他们的收藏夹,这是通过sessionStorage和localStorage完成的,但我的问题是当用户点击新手机添加到他们的收藏夹时,它会覆盖它。我是否必须像IF语句一样说明是否有id仍然添加这个。我对如何做到这一点很困惑......

代码示例......

$(document).on('click', '.productfavourite', function(event) { 

  // whichever HTML element has been clicked,
  // grab the id of that and set it as product fave
  productFave = event.target.id;

  localStorage.setItem('productFave', productFave);
  console.log(productFave);
  window.location="favourites.html";
});

3 个答案:

答案 0 :(得分:0)

我建议您将所选项目保存在对象或数组中,然后再将其写入localStorage。之后,将对象或数组转换为json字符串。

var selected = [];
$(document).on('click', '.productfavourite', function(event) {
    selected.push(event.target.id);
    console.log(selected);
});

这会返回一个可以转换为json的数组。 希望这会有所帮助。

答案 1 :(得分:0)

所以你需要的是保留一个包含收藏夹的集合(列表或字典)。我会给你一些例子,然后你可以弄清楚其余部分。

您在localStorage中获得当前productFav,如下所示:

var fav = localStorage.getItem("productFav") || [];

现在你不想在localStorage中存储一个值,你想要整个列表。因此,您将新的收藏夹添加到列表中,并将结果序列化为json字符串

fav.push(newItem);

localstorage.setitem("productfav", JSON.stringify(fav));

我认为fav是一个列表。如果您想避免添加重复的条目,最好使用字典

答案 2 :(得分:0)

您也可以尝试:

if(Storage !== "undefined") {
   localStorage.setItem("productFave", localStorage.getItem("productFave")+ ", newItemValue3");
}