2017-08-23 3 views
0

回転オドメーターの価値を覚えているブラウザのクッキーを書く方法...ユーザーがサイトを再び訪れるたびに、オドメーターがユーザーがサイトを出たときのオドメーターの値で再開しますか?Javascriptブラウザのクッキーは、走行距離計の価値を覚えていますか?

これは私のコードです:https://jsfiddle.net/aht87opr/17/

現在値ボタンは、現在の値を出力し、それらのクッキーを足すとき、この値が便利になるかもしれません。助け、私は私の変化に4つの重要な部分があり、この

//<![CDATA[ 
     var n = 0; 
     var myOdometer; 
     function startcounting() { 
      var div = document.getElementById("odometerDiv"); 
      myOdometer = new Odometer(div, {value: n, digits: 6, tenths: true}); 
    myOdometer.set(0);   
      update(); 
     } 

     function update() { 
      n=n+0.01 
      myOdometer.set(n); 
      setTimeout(update, 200); 
     } 
    //]]> 

startcounting(); 
+0

あなたはJSON文字列を試しましたか? – TheRealMrCrowley

+0

あなたはおそらくクッキーの代わりにlocalStorageを使うのが良いでしょう。 – TheRealMrCrowley

+0

@TheRealMrCrowley私は次のlocalStorageコードを見つけました。http://jsfiddle.net/Jonathan_Ironman/Hn7jc/ JavaScriptがうまくいきません私のコードhttps://jsfiddle.net/aht87opr/17/にそのスクリプトを採用していますか? –

答えて

1

Here's an updated Snippet of your code with a working localStorage Save Event

を持っている必要があります:

1)使用Object.assign代わりに、すべてのpropertisを設定し、をループであなただけの

をオドメーターへの保存機能を追加すること)

Object.assign(this, { 
    digits: 6, 
    tenths: 0, 
    digitHeight: 40, 
    digitPadding: 0, 
    digitWidth: 30, 
    bustedness: 2, 
    fontStyle: "font-family: Courier New, Courier, monospace; font-weight: 900;", 
    value: -1, 
}, options) 

2を設定したもの上書きするオプション210

var save = function() { 
    localStorage.setItem('myOdometer', JSON.stringify(this)) 
}.bind(this) 

3)を使用すると、走行距離計の機能の外で使用する関数のみを返す)データを保存したり、

Odometer.loadOrCreate = function(div, defaults){ 
    var saved = localStorage.getItem('myOdometer') 
    console.log(saved) 
    return new Odometer(div, (saved ? JSON.parse(saved) : defaults)) 
} 

4新しいオドメーターを作成ロードするために機能を追加します。 javascriptには私的な機能はありません。ただし、ユーザーの場所を保存する際に、パズルの最後のピースが決定され

return { 
    get: get, 
    set: set, 
    save: save, 
    run: run 
} 

(必要な機能だけを持つオブジェクトを返します。この場合には)閉鎖によってプライバシーを達成することができます。あなたは1ミリ秒ごとに保存することでそれをやりたくありません。あなたのスニペットに追加したのはアンロードリスナーで、タブが閉じる前に変更を保存するようにしました。

myOdometer = Odometer.loadOrCreate(div, { 
    value: n, 
    digits: 6, 
    tenths: true 
}); 
window.addEventListener('unload', myOdometer.save) 
+0

努力していただきありがとうございますが、それは各jsfiddleリフレッシュ後の数字を覚えていますか?なぜなら、jsfiddleをリセットすると、0 ... –

+0

がリセットされるのは、コードが 'this.value'をインクリメントする代わりに 'n'を使用するからです。私は完全に動作しているバージョンで更新しました – TheRealMrCrowley

+0

あなたは人生の節約、ありがとうございます! –

関連する問題