我正在尝试使用Cookie创建JavaScript中的警报,这些Cookie既可以通过名称来问候用户,也可以告诉他们在网站上赢得特定游戏的次数。我让用户问候工作正常,但我似乎无法使计数器正常工作。它涉及调用由前一个函数改变的变量,我认为这就是我的问题,但我不知道如何解决这个问题。 (这些变量被称为'cardOnePoints'和'cardTwoPoints'。)任何人都可以帮助我,或者告诉我是否还有其他任何错误?
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 :(得分:0)
有很多事情在发生。还有一些多余的代码 我认为主要问题源于一个名为“gamesWonCount”的cookie和另一个名为“getCount”的cookie。你还有2个变量和一个跟踪这个数字的函数(winnerCount,gamesWin,winnerCount())。
首先要在一个地方跟踪这个数字。我们称之为“winnerCount”。
现在让我们创建一个名为“calculateWinnerCount”的函数,这将根据您的卡片结果计算获胜次数。请注意,“winnerCount”的基本金额将设置为您的Cookie值。
由于我们总是操纵名为winnerCount的变量,我们可以在alert函数中使用它。
以下是代码:
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中的总胜利数,以及你今天赢得的胜利数。
您可能还想在每次计算WinnerCount()时设置cookie值:
function calculateWinnerCount() {
if (cardOnePoints + cardTwoPoints === 21) {
winnerCount = winnerCount + 1;
setCookieOne("gamesWonCount", winnerCount, 14);
}
}