1

我正在使用本地存储来保存 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' ) );
   });
4

2 回答 2

0

添加一个条件,如果 favourite 不是 undefined 或 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');
        }

   });
于 2013-08-21T01:30:03.907 回答
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) );
 }
于 2013-08-21T01:30:31.280 回答