// 方法 1
// 存在问题:如果 cookie 中存在 aaaname=aa;name=bb 获取 name 的值就会出现错误
function getCookie(c_name) {if (document.cookie.length > 0) { // 判断 cookie 是否存在
// 获取 cookie 名称加 = 的索引值
var c_start = document.cookie.indexOf(c_name + "=");
if (c_start != -1) { // 说明这个 cookie 存在
// 获取 cookie 名称对应值的开始索引值
c_start = c_start + c_name.length + 1
// 从 c_start 位置开始找第一个分号的索引值,也就是 cookie 名称对应值的结束索引值
c_end = document.cookie.indexOf(";", c_start)
// 如果找不到,说明是 cookie 名称对应值的结束索引值就是 cookie 的长度
if (c_end == -1) c_end = document.cookie.length
//unescape() 函数可对通过 escape() 编码的字符串进行解码
// 获取 cookie 名称对应的值,并返回
return unescape(document.cookie.substring(c_start, c_end))
}
}
return "" // 不存在返回空字符串
}
// 方法 2
function getCookie2(name) {
var strcookie = document.cookie; // 获取 cookie 字符串
var arrcookie = strcookie.split("; "); // 分割
// 遍历匹配
for (var i = 0; i < arrcookie.length; i++) {var arr = arrcookie[i].split("=");
if (arr[0] == name) {return arr[1];
}
}
return "";
}
// 方法 3
function getCookie3(name) {
// 可以搜索 RegExp 和 match 进行学习
var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg)) {return unescape(arr[2]);
} else {return null;}
}
// 写 cookies
function setCookie(name, value) {
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();}
// 写 cookies 设置过期时间
function setCookie(cname, cvalue, exdays) {var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
// 删除 cookies
function delCookie(name) {var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval = getCookie(name);
if (cval != null)
document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();}