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