JavaScript Cookie检查/设置/删除

Jon*_*nas 1 javascript cookies

我只想检查cookie是否存在,将cookie设置/重置1天,并在窗口/标签关闭时删除cookie

我试图用JavaScript做这个,但是地狱JS是一种愚蠢的语言(我发誓),加上我是愚蠢的.

不管怎么说,这就是我在做的事情:

function checkcookie(name)
{
    //Can't figure this one out
    //I want to check wheather the cookie is set or not
    //if yes
    //{ reset cookie + ... }
    //else
    //{ set cookie + ... }
}

function setcookie(name,value,day)
{
    var expireDate = new Date();
    expireDate.setSeconds(expireDate.getSeconds()+day*24*60*60*1000);
    document.cookie = name + "=" + value + ";path=/;expires=" + expireDate.toGMTString();
}

function delcookie(name)
{
    setcookie(name,"",-1);
}
Run Code Online (Sandbox Code Playgroud)

任何类型的答案都会提前得到赞赏.

wsa*_*lle 5

Quirksmode.org有一篇关于编写与document.cookie(一个本质上不友好的对象)交互的包装器方法的优秀文章.

本文介绍了如何实现以下方法:readCookie,createCookie,和eraseCookie.

从这些方法中,很容易实现您的checkCookie函数,也就是说,如果readCookie返回null或不返回null.

这是你的checkCookie:

function checkCookie(name)
{
    return readCookie(name) != null;
}
Run Code Online (Sandbox Code Playgroud)

这是本文提供的其他三个功能:

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}
Run Code Online (Sandbox Code Playgroud)