添加到本地存储

时间:2017-03-30 14:55:10

标签: jquery json local-storage

我使用本地存储将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'));

3 个答案:

答案 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'));