2016-04-03 8 views
1

こんにちは、私はゲームが問題クッキーを使用して(ジャバスクリプト)

これはのためのループが正常に動作と呼ばれている
function loadData(){ 
cookieArray = document.cookie.split(';'); 
for (var i = 0; i < cookieArray.length; i++){ 
    cookie = cookieArray[i].split('=')[0]; 
    value = cookieArray[i].split('=')[1]; 


    if (cookie=="currentR"){ 

     round = value; 

    } 
    else if(cookie=="blueWins"){ 
     bWins=value 

    } 
    else if(cookie == "redWins"){ 
     rWins=value 

    } 

    } 
} 

を開始したときに、いくつかのデータをロードするためにクッキーを使用if文は何もしていませんか? cookie = cookieArray行の直後にconsole.log(cookie)を置いてみましたが、どのcookieが見つかっているかをテストしました。 currentR、blueWins、およびredWinsがあります。私は各if文の中にconsole.logを置こうとしましたが、if文が決して真実にならないので何も記録しません。これはなぜですか、なぜなら、クッキーはforループのある段階でcurrentR(およびもう1つ)と等しくなるからです。コンソールはエラーを記録していないので、私は分かりません。し、ページを再読み込みし

function saveData(){ 
clearInterval(reloadG) 
document.cookie = 'currentR=' + round 
window.alert("Saved Data") 
document.cookie = 'blueWins=' + bWins 
document.cookie = 'redWins=' + rWins 
location.reload(true) 
} 

それは私がデータを保存機能が含まれます場合に役立ちます私はいくつかのテストをやったと私はSaveDataを機能が正常に動作しますかなり確信しています。ありがとう

+0

代わりに '' == – Dayan

+0

の使用 '===は'( ';') 'document.cookie.splitを試し'(添加空白で)。 – Xufox

+0

ありがとう@Xufox!今素晴らしいです。空白が何をしているのか説明できますか? – harrison

答えて

1

( ";")

document.cookie.split("; ") 
0
  1. 後ろに空白がある場合は、推測よりも要素をトリムしてみてください。そうでない場合
  2. あなたの機能をモジュラー化しようとしてください。

あなたの機能は、クッキーからすべてのデータを読み込んだオブジェクトを返すようにすることができます。この

チェックイン:document.cookie.splitにホワイトスペースを持つことが必要

function loadData(){ 
    var data = {}; 
    var elements = document.cookie.split(';'); 
    for (var i = 0; i < elements.length; i++){ 
    var cookie = elements[i]; 
     cookie = cookie.replace(/^\s+|\s+$/gm,''); // trimming whitespaces 
     cookie = cookie.split('='); 
     data[cookie[0]] = cookie[1]; 
    } 

    return data; 
} 

var data = loadData(); 
alert(data.currentR, data.blueWins, data.redWins); 
1

つまりは単純に最後にtrim()を追加します末尾のスペースを削除します。それは、両側、頭と尾を動作させます。

cookie = cookieArray[i].split('=')[0].trim();

関連する問題