2016-04-13 20 views
1

undefined以外のコードを書くことはできません。私は何を正しくしていないのですか?私は、どのようにスコア機能が働くか分からない。これまで私はバニラfunction doSomething() {}メソッドを書いただけです。ありがとうございました。初心者でlocalStorageを稼働させようとしました

var score = score || {}; 

score = { 
    saveHighScore: function(tally) { 
    var high_score = localStorage.high_score; 
    if (typeof high_score == 'number') { 
     if (tally > high_score) { 
     localStorage.high_score = tally; 
     } 
    } else { 
     localStorage.high_score = tally; 
    } 
    }, 
    getHighScore: function() { 
    var high_score = localStorage.high_score; 
    if(typeof high_score !== 'number') { 
     high_score = 0; 
     localStorage.high_score = high_score; 
    } 
    return high_score; 
    } 
} 

window.console.log("Score: ", score.getHighScore()); 
+0

'window.localStorage'? – OrangeDog

+0

それは動作しているようですhttps://jsfiddle.net/2t6ngjvw/ – maioman

+0

上記のコードは 'undefined 'を与えません – nikhil

答えて

1

あなたの問題は、あなたがのparseIntに必要なので、文字列のキー/値のペアとしてのローカルストレージに格納値である: -

var score = score || {}; 

score = { 
    saveHighScore: function(tally) { 
    var high_score = localStorage.high_score; 
    if (typeof high_score == 'number') { 
     if (tally > high_score) { 
     localStorage.high_score = tally; 
     } 
    } else { 
     localStorage.high_score = tally; 
    } 
    }, 
    getHighScore: function() { 
    var high_score = parseInt(localStorage.high_score); 
    if(typeof high_score !== 'number') { 
     high_score = 0; 
     localStorage.high_score = high_score; 
    } 
    return high_score; 
    } 
} 

score.saveHighScore(100) 

window.console.log("Score: ", score.getHighScore()); 

私はなぜわかりませんが、私は同じことを再ロード上に掲示されたコードであり、 はコンソールでスコア:0を返します。

それは0を返す理由は、それがローカルストレージから値を取得し、その数ではないかどうかを確認するために比較し、そうでないならば、あなたは0に設定されているgetHighScoreの内側にあります。ローカルストレージはすべての値を文字列として保存するので、値は常に0に設定されます。

私は、スコア関数がどのように動作するかわからないんだけど、どちらか

は、これらのオブジェクトの内部だけの機能です。

関連する問題