2013-03-12 76 views
1

我正嘗試在JavaScript中使用Cookie來創建一個警報,這兩個cookie都通過名字向用戶致意,並告訴他們他們在網站上贏得了特定遊戲的次數。我有用戶問候工作正常,但我似乎無法讓計數器正常工作。它涉及調用前一個函數改變的變量,我認爲這是我的問題所在,但我不知道如何解決這個問題。 (這些變量被稱爲「cardOnePoints」和「cardTwoPoints」。)任何人都可以幫我解決這個問題,或者告訴我是否還有其他問題?Cookie提醒,從另一個函數內部調用一個變量?

function getCookieOne(c_name) 
{ 
    var i,x,y,ARRcookies=document.cookie.split(";"); 
    for (i=0;i<ARRcookies.length;i++) 
    { 
     x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
     y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
     x=x.replace(/^\s+|\s+$/g,""); 
     if(x==c_name) 
     { 
      return unescape(y); 
     } 
    } 
} 

function setCookieOne(c_name,value,exdays) 
{ 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 
    document.cookie=c_name + "=" + c_value; 
} 

var winnerCount; 
var getCount = getCookieOne('getCount'); 

function winnerCount() 
{ 
    if (cardOnePoints + cardTwoPoints === 21) 
    { 
     winnerCount = getCount + 1 
    } 
    else 
    { 
     winnerCount = getCount 
    }; 
} 

function countWinner() 
{ 
    return winnerCount 
} 

function checkCookie() 
{ 
    var username=getCookieOne("username"); 
    var gamesWonCount=getCookieOne("gamesWonCount"); 

    function winnerCounter() 
    { 
     var gamesWin 
     if (cardOnePoints + cardTwoPoints === 21) 
     { 
      gamesWin=++winnerCount; 
     } 
     else 
     { 
      gamesWin=winnerCount 
     }; 
     return gamesWin 
    } 

    if (username!=null && username!="") 
    { 
     alert("Sup " + username+ "!!! Woah man, you've won " 
      + countWinner() + " game(s)!!!"); 
    } 
    else 
    { 
     username=prompt("Please enter your name:",""); 
     if (username!=null && username!="") 
     { 
      setCookieOne("username",username,365); 
     } 
    } 
} 
+0

使用localStorage的,除非你需要支持 howderek 2013-03-12 23:23:03

+0

對不起,我不明白這是如何適用於調用這些變量在被改變後? – hayleyelisa 2013-03-12 23:30:07

+0

今後請使用正確的標籤。另外,你似乎以奇怪的方式使用分號 – 2013-03-12 23:34:52

回答

0

有很多事情正在進行。還有一些多餘的代碼。
我認爲主要問題源於有一個名爲「gamesWonCount」的cookie和另一個名爲「getCount」的cookie。你也有2個變量和一個跟蹤這個數字的函數(winnerCount,gamesWin,winnerCount())。

第一件事是在一個地方跟蹤該號碼。我們稱之爲「贏者數」。

現在讓我們創建一個名爲「calculateWinnerCount」的函數,它將根據您的卡片結果計算獲勝次數。請注意,「winnerCount」的基本金額設置爲您的Cookie值。

由於我們總是操縱名爲winnerCount的變量,因此我們可以在警報函數中使用它。

下面是代碼:

function getCookieOne(c_name) 
{ 
    var i,x,y,ARRcookies=document.cookie.split(";"); 
    for (i=0;i<ARRcookies.length;i++) { 
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
    x=x.replace(/^\s+|\s+$/g,""); 
    if (x==c_name) 
    { 
     return unescape(y); 
    } 
    } 
} 

function setCookieOne(c_name,value,exdays) { 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value=escape(value) + ((exdays==null) ? "" : "; 
    expires="+exdate.toUTCString()); 
    document.cookie=c_name + "=" + c_value; 
} 

var winnerCount = getCookieOne('gamesWonCount') || 0; 

function calculateWinnerCount() { 
    if (cardOnePoints + cardTwoPoints === 21) { 
    winnerCount = winnerCount + 1; 
    } 
} 

function checkCookie() 
{ 
    var username=getCookieOne("username"); 

    if (username!=null && username!="") { 
    alert("Sup " + username+ "!!! Woah man, you've won " 
     + winnerCount + " game(s)!!!" 
     ); 
    } else { 
    username=prompt("Please enter your name:",""); 
    if (username!=null && username!="") { 
    setCookieOne("username",username,365); 
    } 
    } 
} 

我不知道你是如何使用或調用這些功能。但是如果您在每場紙牌遊戲結束時調用calculateWinnerCount(),則應該在您的winnerCount變量中添加一個數字,該變量包含您存儲在您的cookie中並且您今天贏得的總勝數。

您可能還需要設置cookie值每次你calculateWinnerCount()這樣的:

function calculateWinnerCount() { 
    if (cardOnePoints + cardTwoPoints === 21) { 
    winnerCount = winnerCount + 1; 
    setCookieOne("gamesWonCount", winnerCount, 14); 
    } 
} 
+0

非常感謝!我的代碼變得非常混亂,因爲我已經嘗試了很多不同的方式來解決它,所以我很感謝你幫助解決這個問題,但即便如此,無論用戶有多少次,計數器仍然只返回0值實際上贏了。我真的認爲問題在於不得不調用前一個函數改變的變量(cardOnePoints和cardTwoPoints)? – hayleyelisa 2013-03-12 23:53:20

+0

不幸的是,從這裏我無法確定問題出在哪裏。您可以隨時在JsFiddle上創建測試應用程序並將其發佈到此處。通常會得到最好的結果。 http://jsfiddle.net/ – Danwilliger 2013-03-12 23:56:36

+0

好吧,這裏是我的完整代碼... http://jsfiddle.net/hayleyelisa/9padf/1/ – hayleyelisa 2013-03-13 00:02:39

相關問題