原生操作cookie方法

1.设置cookie
function setCookie(name,value) {
    var Days = 30;
    var exp = new Date();//获取当前时间
    exp.setTime(exp.getTime() + Days*24*60*60*1000);  //将date设置为n天以后的时间
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();//格式化时间并设置cookie
 }
2.读取cookie
function getCookie(name) {
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");//匹配cookie的key和value
    if(arr=document.cookie.match(reg))
        return unescape(arr[2]);//拿到value
    else
        return null;
}
3.删除cookie
function delCookie(name) {
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);////将date设置为过去的时间
    var cval=getCookie(name);
    if(cval!=null)
        document.cookie= name + "="+cval+";expires="+exp.toGMTString();//设置过期cookie
}

思考:定义一个新的cookie,然后document.cookie = cookie; 这样难道不会覆盖之前的值吗?

原因:设置cookie时可以直接给document.cookie赋值,而且后面的值不会覆盖前面的值,它具有一种累加机制。cookie的值可以由document.cookie直接获得,但这样获取的是所有的cookie的值;要通过一指定的cookie名称来获得所对应的值,则需要做一些处理。

你可能感兴趣的:(原生操作cookie方法)