1

以下に示すように、IDを保存するためにローカルストレージを使用していますが、想定どおりに機能します。アンカーをクリックすると、値が配列に送信されます。問題は、もう一度クリックすると、同じ値が同じ配列に再度保存されることです。2 回目のクリックでその値を配列から取り出したいと思います。したがって、基本的にはトグルとして機能させたいと考えています。

    $(".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

お気に入りが未定義または 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

OK、あなたの説明は最初は明確ではありません。配列から値を取り出すということですよね?

$(".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 に答える