原生操作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名称来获得所对应的值,则需要做一些处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容