浏览器中,使用JavaScript操作cookie的两个工具函数。

设置cookie值, 必须的參数是name和value,可选參数是过期天数和域名。

// 设置cookie值(key,value,过期天数,域名)
function setCookie(cookieName, cookieValue, expiredays, domain){
    // 0 比較特殊
    if(0 === cookieValue){
        cookieValue = 0;
    } else if(!cookieValue){
        cookieValue = "";
    }
    // 编码
    cookieValue = encodeURIComponent(cookieValue);
    //获取cookie字符串
    var cookieStr= cookieName + "=" + cookieValue;

    // 过期时间
    if(expiredays && !isNaN(expiredays)){
        var exdate=new Date();
        exdate.setDate(exdate.getDate()+expiredays);
        cookieStr += "; expires="+exdate.toGMTString();
    }
    // 域名
    //domain = domain || document.domain;
    if(domain){
        cookieStr += "; path=" + "/";
        cookieStr += "; domain="+domain;
    }

    // 保存本地 cookie
    document.cookie = cookieStr;

    // 返回设置后的值
    return cookieValue;
};

获取cookie值,仅仅须要一个name,过期时间和域名浏览器会自己管理,有效的cookie也仅仅能获取到名称和值。

// 获取cookie值(key)
function getCookie(cookieName){
    //获取cookie字符串
    var strCookie=document.cookie;
    //将多cookie分割为多个名/值对
    var arrCookie=strCookie.split("; ");
    var cookieValue = null;
    //遍历cookie数组,处理每一个cookie对
    for(var i=0;i<arrCookie.length;i++){
        var arr=arrCookie[i].split("=");
        //找到cookie,并返回它的值
        if(cookieName==arr[0]){
            cookieValue=(arr[1]);
            break;
        }
    }
    //
    if(!cookieValue){
        cookieValue = "";
    }
    cookieValue = decodeURIComponent(cookieValue);
    //
    return cookieValue;
};

假设要删除一个cookie要怎么做?

JS是没有这个API的。依据上面我们学到的知识。过期的cookie就相当于被删除了。
示比例如以下

setCookie("user", "renfufei");// "renfufei"
getCookie("user");// "renfufei"
setCookie("user", "renfufei", -1);// "renfufei"
getCookie("user");// ""

感谢: 太空飞猪

日期: 2016年1月7日

作者: 铁锚