js中使用cookie的地方有很多,保存用户名及密码,保存登陆信息等,使下次用户上线就有很好的体验~。下面来说说js中cookie的使用方法和封装方法
1、(设置)设置cookie,设置cookie一般需要设置值和时间,如果不设置时间则会随着浏览器关闭而关闭!
设置值的形式为“属性=值”的形式,设置的时候还算舒服,可是获取就不是那么人性化了~
var time = new Date( new Date().getTime() + 365*24*60*60*1000 ); //设置时间为365天(有的网页就是这么暴力,直接整一年!)
document.cookie = "dd=goudan;expires="+time.toGMTString();"//
此时我们可看到我们已经设置了一个名为dd ,值为goudan的cookie,如果要查看可以打开chrome浏览器点击此处查看
[图片上传失败...(image-ca4575-1515155390053)]
2、(获取)此时我们获取cookie的时候这样: (这里有个点很关键!!!,如果本地获取不到,试着开一个服务,使用webstrom等自带服务器的软件打开即可)
var c = document.cookie;
alert( c );
此时我们看到的是dd=goudan,想要要获取值我们还得对着一串字符串进行操作
var arr = document.cookie.match(new RegExp("(\\s|^)"+key+"=([^;]*)(;|$)"));
这里使用正则来匹配名,arr中即为设置dd的值 goudan。
3、(删除)删除cookie我们只需要设置一个负的时间,,并将值赋值为空,即为过去时间,就可以删除cookie
var time = new Date( new Date().getTime() + -1*24*60*60*1000 );//这里设置时间为-1
document.cookie = "ddi=; expires="+time.toGMTString();
到这里,所有对cookie的操作就完了,但有时候我们并不想这么麻烦,下面就给出封装的方法来更人性化的操作
/*
这里我们设置的时候直接传入json格式的数据即可完成多个cookie的保存,时间单位按照天来计算。
获取的时候我们只需要传入需要获取的名,(即前面的dd即可返回goudan)
删除时传入需要删除的名(数组形式,如["dd"])即可完成删除,此处需要删除多个,可传入数组的形式如["dd","name","age"],即可删除dd对应的值
*/
//设置cookie
function setCookie(vJson , time){
var data = new Date( new Date().getTime() + time*24*60*60*1000 ).toGMTString();
for (var key in vJson)document.cookie = key+"="+vJson[key]+"; expires="+data;
}
//获取cookie
function getCookie(key){
var arr = document.cookie.match(new RegExp("(\\s|^)"+key+"=([^;]*)(;|$)"));
return arr?arr[2]:"";
}
//移除cookie
function removeCookie(akey){
var arr = akey;
var json = {};
var length = arr.length;
for(var i = 0; i<arr.length;i++)json[akey[i]] = "";
setCookie(json , -1);
}