2017-03-14 7 views
0

localstorageを初めて使用しましたが、これはユーザーのブラウザで1回レンダリングするために特定のIDまたはCLASSをCSSファイルから保存するために必要です彼らは "グリッド/リスト"のレイアウトを表示するために(クリックイベントで)彼らの選択をしました。 localstorageはここで優先されますか?それとも、 "sessionstorage"を使うのが良いでしょうか?それとも全く別の方法を使うのが良いでしょうか?もしそうなら、何?私が達成しようとしています何localstorageを使用してクリック機能でユーザーのレイアウトの設定を保存して取得する

はこれです:1 2のアイコンの ユーザーがクリックする - これらのアイコンは、私が作ったCSSレイアウトのIDやクラスを保存する必要がある(どちらかの「居心地の良い」または「リスト」表示) 。ユーザがウェブサイトの他のページを通過するとき、このプリファレンスは記憶されるので、ユーザがこのページに戻ると、レイアウトは依然として彼/彼女が選択したものと同じである。ユーザーがブラウザを閉じてからそのページに再度開いた場合も同様です。

キャッシュされた時間を追加することも優先されます。たとえば、ユーザーのlocalstorageに「x」の日数のレイアウトを保持してから、その日数をクリアします。

私はこれを始める方法もわからないので、助力をいただければ幸いです。私は数多くの例を見てきましたが、私の頭が彼らのやり方を覆い隠しているように見えることはできません。私が見た例は私のニーズに応えないようです。ここで

は、私がこれまで持っているものです。

JS

// Changing layout 'Cozy' to 'List' 
$('.news_nav-options_list').on('click', function() { 
    var cozy=document.getElementById('hideClass'); 
    cozy.style.display="none"; 

    var list=document.getElementById('showClass'); 
    list.style.display="block"; 

    $(this).addClass('active'); 
    $('.news_nav-options_cozy').removeClass('active'); 
}); 

// Changing layout 'List' to 'Cozy' 
$('.news_nav-options_cozy').on('click', function() { 
    var list=document.getElementById('hideClass'); 
    list.style.display="block"; 

    var cozy=document.getElementById('showClass'); 
    cozy.style.display="none"; 

    $(this).addClass('active'); 
    $('.news_nav-options_list').removeClass('active'); 
}); 

そして、ここでは、私がこれまで持っているもののデモです:

DEMO

私は".setItem()と.getItem"を使用して読み込み、localstorageが望ましいしかし、再び、私はどのように始めるべきか分かりません。私のjsに現在持っているものにlocalstorageを適用できますか?

答えて

0

これは間違いではありませんが、探している方向で指摘する必要があります。

$(document).ready(function(){ 
    // Changing layout 'Cozy' to 'List' 
    $('.news_nav-options_list').on('click', function() { 
     changeToListView(); 
    }); 

    // Changing layout 'List' to 'Cozy' 
    $('.news_nav-options_cozy').on('click', function() { 
     changeToCozyView(); 
    }); 

    if (typeof(Storage) !== "undefined") { 
     var view = localStorage.getItem("view"); 
     if (view && view == "cozy") { 
      changeToCozyView(); 
     } else if (view && view == "list") { 
      changeToListView(); 
     } else { 
      // view isn't set, or is set to something we don't recognize 
     } 
    } else { 
     // user's browser doesn't support localStorage 
    }   
}); 

function changeToListView() { 
    var cozy=document.getElementById('hideClass'); 
    cozy.style.display="none"; 

    var list=document.getElementById('showClass'); 
    list.style.display="block"; 

    storagePut("list"); 

    $(this).addClass('active'); 
    $('.news_nav-options_cozy').removeClass('active'); 
} 

function changeToCozyView() { 
    var list=document.getElementById('hideClass'); 
    list.style.display="block"; 

    var cozy=document.getElementById('showClass'); 
    cozy.style.display="none"; 

    storagePut("cozy"); 

    $(this).addClass('active'); 
    $('.news_nav-options_list').removeClass('active'); 
} 

function storagePut(view) { 
    if (typeof(Storage) !== "undefined") { 
     localStorage.setItem("view", view); 
    } else { 
     // user's browser doesn't support localStorage 
    }   
} 
+0

この記事の意味に関するコメントを追加することは可能でしょうか?私が最初の投稿で言ったように、私はlocalstorageを使うのが全く新しいです。それはまったく正しいとはどういう意味ですか?それをテストした後、正常に動作しているように見えました - 'アクティブな'クラスが表示されるようにchangeToListView関数とchangeToCozyView関数で '$(this)).addClass( 'active');'を変更する必要がありました他のすべては大丈夫だと思われました。あなたは、このlocalstorageがユーザーのブラウザにどれだけ長く留まるのかの時間制限を挿入する場所を偶然に知っていますか?例:「x」日分の店舗情報? – Michael

+0

@michael投稿はあなたのために完全に解決するのではなく、あなたを一般的な方向に向けることを望んでいました。 「ローカルストレージがどれだけ長く保持されるか」という質問に答えるために、ローカルストレージを明確にするまで無期限に滞在します。 [localstorage vs sessionstorage](http://stackoverflow.com/questions/5523140/html5-local-storage-vs-session-storage)を参照してください。 –

関連する問題