单击时从本地存储中取消设置值

时间:2013-08-21 01:23:39

标签: jquery local-storage

我正在使用本地存储来保存id,如下所示,它可以正常工作。当我单击锚点时,它会将值发送到数组中。问题是,当我再次单击它时,它会将相同的值再次保存到同一个数组中。我想在第二次点击时从数组中取出该值。所以基本上我希望它作为一个切换。

    $(".favorites").click(function() {

        var favorite = JSON.parse(localStorage.getItem( 'favorite' ));

        if (favorite == undefined)
        {
            favorite = Array();
        }
        favorite.push($(this).attr('data-petid'));

        localStorage.setItem( 'favorite', JSON.stringify(favorite) );
        JSON.parse( localStorage.getItem( 'favorite' ) );
   });

2 个答案:

答案 0 :(得分:0)

添加一个条件,如果收藏夹未定义或为null,则只返回该值。

$(".favorites").click(function() {

        var favorite = JSON.parse(localStorage.getItem( 'favorite' ));

        if (favorite === undefined || favorite === null)
        {
            favorite = Array();
            favorite.push($(this).attr('data-petid'));

            localStorage.setItem( 'favorite', JSON.stringify(favorite) );
            JSON.parse( localStorage.getItem( 'favorite' ) );
        }
        else{
            alert('favorite');
        }

   });

答案 1 :(得分:0)

好的,你的描述一开始并不清楚,你的意思是从数组中取出值,对吗?

$(".favorites").click(function() {

    var favorite = localStorage.getItem( 'favorite' );
    var petid = $(this).attr('data-petid');
    var index;

    favorite = JSON.parse(favorite) || [];

    if ((index = favorite.indexOf(petid)) === -1) {
      favorite.push(petid);
    } else {
      favorite.splice(index, 1);
    }
    localStorage.setItem('favorite', JSON.stringify(favorite) );
 }