当我尝试获取Cookie“Gold”这是我游戏的货币时,它会返回NaN。现在,这个cookie被命名为“gold”,其值为7238(对我来说很明显,因为我将其保存为我的comp中的cookie)
function getCookie(cname){
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i= 0; i < ca.length; i++){
var c = ca[i];
while(c.charAt(0) == ' '){
c = c.substring(1);
}
if(c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
var gold;
function getGold() {
if(getCookie("gold") == null) {
gold = 0;
} else {
var sup = getCookie("gold");
var co = parseInt(sup, 10);
gold += co;
}
}
getGold();
这个结果是NaN没有帮助,因为它没有说我出错的地方,我也可以提供我用来保存cookie的功能,如下所示:
function saveCookies(cname, value) {
var d = new Date();
d.setTime(d.getTime() + (365 * 24 * 60 * 60 *1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + value + ";" + expires + ";path=/";
}
然后当一些流氓点击“保存”按钮时,它执行的一个功能是
saveCookies("gold", gold")
除非您需要整个程序,否则我可以提供所有可能提供的信息,该程序可以在matrix-hub.com/CodeCoins.php上找到
答案 0 :(得分:0)
这个结果是NaN没有帮助,因为它没有说我出错的地方
首先将此行saveCookies("gold", gold")
更改为saveCookies("gold",7238)
,此处您的第一个参数是Cookie 名称,即黄金,第二个参数是Cookie 值这应该是7238 不“黄金”
其次,当您设置var gold;
时,黄金的值为undefined
。因此,当您转到else
阻止因为getCookie("gold") == null
条件为false
时代码块中, gold 的值仍为undefined
var gold;
function getGold() {
if(getCookie("gold") == null) {
gold = 0;
} else {
var sup = getCookie("gold");
var co = parseInt(sup, 10); //7238
// this is where you messed up, undefined = undefined + 7238
gold += co;
}
return gold; // also missed this return line
}
console.log(getGold()); // it is returning NaN
实际上这条线gold += co;
你想要完成什么?
如果您设置Cookie值 gold = 7238 ,那么此行gold += co;
应该返回14476
?