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名稱來獲得所對應的值,則需要做一些處理。