如何更新cookie值(而不更改过期日期)?javascript

如何更新cookie值(而不更改过期日期)?javascript,javascript,cookies,Javascript,Cookies,我有下一个代码: 检查我的cookie是否存在如果不存在,则创建名为value的cookie 在else中,我再次读取cookie并检查值是否为1,这里我想设置一个新值,但不更改此cookie的过期日期和时间,只更新该值 if( readCookie("value")==null) { createCookie("value",1,1); } else { if(readCookie("value")==1) { /*here I would like to set to cookie cal

我有下一个代码:

检查我的cookie是否存在如果不存在,则创建名为value的cookie 在else中,我再次读取cookie并检查值是否为1,这里我想设置一个新值,但不更改此cookie的过期日期和时间,只更新该值

if( readCookie("value")==null)
{

createCookie("value",1,1);
}
else
{
if(readCookie("value")==1)
{
/*here I would like to set to cookie called value the new value to 2 */
}
else
{
alert("no es uno");
}
}

function createCookie(name, value, days) {
    var expires;

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

function readCookie(name) {
    var nameEQ = encodeURIComponent(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 decodeURIComponent(c.substring(nameEQ.length, c.length));
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}
if(readCookie(“value”)==null)
{
createCookie(“值”,1,1);
}
其他的
{
if(readCookie(“值”)==1)
{
/*在这里,我想将新值设置为2*/
}
其他的
{
警觉(“否”);
}
}
函数createCookie(名称、值、天数){
var到期;
如果(天){
变量日期=新日期();
date.setTime(date.getTime()+(天*24*60*60*1000));
expires=“;expires=“+date.togmString();
}否则{
expires=“”;
}
document.cookie=encodeURIComponent(名称)+“=”+encodeURIComponent(值)+expires+“路径=/”;
}
函数readCookie(名称){
var nameEQ=encodeURIComponent(name)+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i
在JavaScript中,无法
获取设置好的cookie的过期日期,您只需获取cookie的值,因此,我想,如果没有这些知识,您无法设置cookie而不替换先前的过期日期值。

虽然您无法直接检查过期日期,设置cookie时,可以将到期日期存储为cookie的一部分。然后,无论何时,只要您想检查有效期,就可以查看cookie的这一部分。要更改cookie而不影响到期日期,只需重新创建cookie,替换到期日期

document.cookie="username=John Doe Thu, 18 Dec 2013 12:00:00 UTC; expires=Thu, 18 Dec 2013 12:00:00 UTC";

创建cookie时,您可以随时更改cookie的过期日期。

那么问题出在哪里?看起来你正在做你想做的事情。我有ReadCookie、CreateCookie和橡皮擦cookie,现在我需要一个UpdateCookie(但不影响在CreateCookie中指定的过期日期),我想更新值,例如你有这个cookie文档。cookie=“username=John Smith;expires=Thu,2013年12月18日12:00:00 UTC;path=/”;我只想更新username=而不是john smit;我希望expires不受影响,我希望新值是它的文档。cookie=“username=no John Smith;expires=Thu,2013年12月18日12:00:00 UTC;path=/”;结果不是这样的afected@angel我们知道你想做什么,你的问题很清楚。这是不可能的。当您尝试设置cookie时,您会替换它的所有“属性”(以及过期日期)难道没有“技巧”吗?例如,使用一个循环获取所有属性(按cookie的名称),然后在擦除并再次创建cookie之后,但之前我获取了旧属性并创建了旧cookie
文档。cookie
-设置一个cookie并获取所有cookie(目前)的唯一方法。当你得到cookies时,你只得到它的值,仅此而已:)。当您得到它时,您是否在
document.cookie
中看到除了cookie的名称和值以外的其他信息??:)聪明的把戏,浪费一点空间,但那没关系。如果多方正在设置cookie,则此选项将不起作用。