Cookie使用parseInt

时间:2018-04-21 00:14:57

标签: javascript html cookies

当我尝试获取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上找到

1 个答案:

答案 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