Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储多个ID';使用JavaScript在localStorage中使用_Javascript - Fatal编程技术网

存储多个ID';使用JavaScript在localStorage中使用

存储多个ID';使用JavaScript在localStorage中使用,javascript,Javascript,我想为我的网站添加收藏夹功能。我使用的技术有html、css、javascript和json。我正在通过ajax加载json文件。用户可以通过sessionStorage和localStorage搜索设备并将其添加到收藏夹中,但我的问题是,当用户单击新手机以添加到收藏夹中时,它会覆盖该设备。我是否需要像一个IF语句,它会说,如果有一个id仍然添加这一个。我不知道该怎么做 代码示例 $(document).on('click', '.productfavourite', function(even

我想为我的网站添加收藏夹功能。我使用的技术有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";
});

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

var selected = [];
$(document).on('click', '.productfavourite', function(event) {
    selected.push(event.target.id);
    console.log(selected);
});
这将返回一个可以转换为json的数组。
希望这能有所帮助。

所以你需要的是保留一个收藏(列表或词典)来包含收藏夹。我给你举几个例子,然后你就可以找出剩下的

您可以在本地存储中获得当前的
productFav
,如下所示:

var fav = localStorage.getItem("productFav") || [];
现在,您不希望在localStorage中存储一个值,而是希望将整个列表都存储在那里。因此,将新收藏夹添加到列表中,并将结果序列化为json字符串

fav.push(newItem);

localstorage.setitem("productfav", JSON.stringify(fav));
我假设fav是一个列表。如果要避免添加重复条目,最好使用字典,您还可以尝试:

if(Storage !== "undefined") {
   localStorage.setItem("productFave", localStorage.getItem("productFave")+ ", newItemValue3");
}
localStorage.setItem('productFave',productFave)
您设置了项目
productFave
的值,显然覆盖了其中的内容。你会期待什么?该setItem实际上会获取该项,对其进行解析,向其添加一个额外的值并将其存储回去?这是你需要建立自己的东西。也许有一个getItem?。。。