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