js获取cookie值 根据cookie名称获取值 删除设置cookie

//方法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();
}