JavaScript Cookies检查/设置/删除

JavaScript Cookies检查/设置/删除,javascript,cookies,Javascript,Cookies,我只是想看看有没有饼干, 设置/重置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 //{ re

我只是想看看有没有饼干, 设置/重置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);
}
任何类型的答案都是值得赞赏的,thx会提前提供。

Quirksmode.org已经开始编写与
document.cookie
(一个天生不友好的对象)交互的包装器方法

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

通过这些方法,很容易实现
checkCookie
函数,也就是说,如果
readCookie
返回空值或不返回空值

这是您的
检查cookie

function checkCookie(name)
{
    return readCookie(name) != null;
}
以下是本文提供的其他三个功能:

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);
}
函数createCookie(名称、值、天数){
如果(天){
变量日期=新日期();
date.setTime(date.getTime()+(天*24*60*60*1000));
var expires=“;expires=“+date.togmString();
}
else var expires=“”;
document.cookie=name+“=”+value+expires+“path=/”;
}
函数readCookie(名称){
变量nameEQ=name+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i
Quirksmode.org在编写与
document.cookie
(一个天生不友好的对象)交互的包装器方法时遇到了麻烦

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

通过这些方法,很容易实现
checkCookie
函数,也就是说,如果
readCookie
返回空值或不返回空值

这是您的
检查cookie

function checkCookie(name)
{
    return readCookie(name) != null;
}
以下是本文提供的其他三个功能:

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);
}
函数createCookie(名称、值、天数){
如果(天){
变量日期=新日期();
date.setTime(date.getTime()+(天*24*60*60*1000));
var expires=“;expires=“+date.togmString();
}
else var expires=“”;
document.cookie=name+“=”+value+expires+“path=/”;
}
函数readCookie(名称){
变量nameEQ=name+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i
在这里,试试看

  function checkcookie(name)
    {


  if (name!=null && name!="")
  {
     //reset cookie
     cookie_value="test";
     document.cookie=name + "=" + cookie_value;
  }
else
  {
     //if there is no cookie, create a new one
     cookie_value="test";
     document.cookie=name + "=" + cookie_value;
  }
}


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

    function delcookie(name)
    {
        setcookie(name,"",-1);
    }
来,试试看

  function checkcookie(name)
    {


  if (name!=null && name!="")
  {
     //reset cookie
     cookie_value="test";
     document.cookie=name + "=" + cookie_value;
  }
else
  {
     //if there is no cookie, create a new one
     cookie_value="test";
     document.cookie=name + "=" + cookie_value;
  }
}


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

    function delcookie(name)
    {
        setcookie(name,"",-1);
    }

您可以在此处测试Quirksmode代码:


代码正在运行,因此一定是其他原因导致了您的问题。。。因此,如果您在jsfiddle.net中运行它,请查看它对您有什么帮助-这可能有助于确定它是否是一个浏览器设置

您可以在此处测试Quirksmode代码:


代码正在运行,因此一定是其他原因导致了您的问题。。。因此,如果您在jsfiddle.net中运行它,看看它对您有什么帮助-这可能有助于确定它是否是一个浏览器设置

也许您可以尝试更改
expireDate.setSeconds((expireDate.getSeconds()+day*24*60*60*1000);
expireDate.setSeconds()+day*24*60*60*1000);
?看起来你正在尝试重新发明以前已经做了数十亿次的东西。你为什么要用你讨厌的语言编写库?只需搜索“javascript cookie库”或者使用插件:pJavaScript是一种很棒的语言。浏览器提供cookie信息的方式很愚蠢。请把责任推到它应该负责的地方。我很高兴T.J.这么说,因为处理cookie的困难与JavaScript无关。首先,浏览器提供了一个糟糕的“API”其次,Cookie是HTTP缺失领域的权宜之计。第三,Cookie可以在很多地方修改,而不仅仅是脚本。第四,由于“会话”之间的差异,Cookie的过期时间令人困惑Cookie和具有特定过期日期的Cookie。JavaScript与此无关。我在这方面有很多经验…@Shepherd:不,我不是在开玩笑。很明显,你根本不懂这种语言,这与当前许多其他主要语言有很大的不同。如果你必须使用JavaScript,我建议你强烈建议你放弃这种态度,花时间好好学习这门语言;否则,你会不断地用脑袋去打击你的错误观念,并感到恼火。如果你不必这样做,千万不要这样做,继续用其他语言培养你的技能。我并不是说它在任何方面都是完美的(它不是),但我从未见过这样的语言。也许你可以尝试将
expireDate.setSeconds((expireDate.getSeconds()+day*24*60*60*1000);
更改为
expireDate.setSeconds(+day*24*60*60*1000);
?看起来你正在尝试重新发明以前已经做了数十亿次的东西。你为什么要用你讨厌的语言编写库?只需搜索“javascript cookie库”或者使用插件:pJavaScript是一种很棒的语言。浏览器提供cookie信息的方式很愚蠢。请把责任推到它应该负责的地方。我很高兴T.J.这么说,因为处理cookie的困难与JavaScript无关。首先,浏览器提供了一个糟糕的“API”其次,Cookie是HTTP缺失领域的权宜之计。第三,Cookie可以在很多地方修改,而不仅仅是脚本。第四,由于存在di,Cookie的过期时间令人困惑