我使用本地存储将json数据添加为收藏夹。出于某种原因,当我添加更多的一个喜欢它删除已经在本地存储中的那个。
$('.favoritesbtn').click(function() {
var storedbar = JSON.parse(localStorage.getItem('storedBar'));
var favArray = [];
favArray.push(storedbar.id, storedbar.barname, storedbar.address, storedbar.description, storedbar.image);
localStorage.setItem('favourites', JSON.stringify(favArray));
console.log(localStorage.getItem('favourites'));
答案 0 :(得分:1)
这是预期的行为。 本地存储是一个键值存储,当您在现有密钥中写入数据时,它将被覆盖。
要添加值,您需要解析现有值,添加项目并再次写入。
var storedFavs = JSON.parse(localStorage.get('favourites') || '[]');
storedFavs.push(storedbar.id, storedbar.barname, storedbar.address, storedbar.description, storedbar.image);
localStorage.setItem('favourites', JSON.stringify(storedFavs));
答案 1 :(得分:0)
把行var favArray = [];超出点击事件
var favArray = []; //here
$('.favoritesbtn').click(function() {
var storedbar = JSON.parse(localStorage.getItem('storedBar'));
favArray.push(storedbar.id, storedbar.barname, storedbar.address, storedbar.description, storedbar.image);
localStorage.setItem('favourites', JSON.stringify(favArray));
console.log(localStorage.getItem('favourites'));
答案 2 :(得分:0)
您正在编写一个元素的数组,首先需要读取您的收藏夹,将新元素添加到其中,然后将其保存回来。尝试这样的事情,虽然你可能想要添加一些检查来处理已经没有优惠的情况,然后使用空数组等。
var storedbar = JSON.parse(localStorage.getItem('storedBar'));
var favArray = JSON.parse(localStorage.getItem('favourites'));
favArray.push(storedbar.id, storedbar.barname, storedbar.address, storedbar.description, storedbar.image);
localStorage.setItem('favourites', JSON.stringify(favArray));
console.log(localStorage.getItem('favourites'));