原生js操作cookie
2020-03-25 本文已影响0人
知名大学士
首先每个cookie都是一个键/值对存储,而cookie字符串以“;
”连接多个cookie键/值对,我们需要做的首先将cookie字符串分割成单独的一个cookie名/值对。
var cookieArray = document.cookie; //获取cookie存储字符串
var arr = cookieArray.split(";"); //将获得的cookie字符串以;分割开获得单独每个cookie名/值对
获得cookie名对应的值
//假设要获取的cookie的名字是name,则遍历数组找到名字所对应的值
for(var i=0;i<arr.length;i++){
var arr1 = arr.split("="); //将名/值对以“=”分割开
if(arr1[0]==name){
var result = arr1[1]; //如果名为name,则结果result为名对应的值
}
}
设置cookie,设置cookie就是给cookie赋值name,value,days,所对应的含义是名,值,过期时间
//直接设置cookie赋值语句
document.cookie="name=value;expires=GMT_String";
//以函数方式
function setcookie(name,value,days){
var d= new Date();
d.setTime(d.getTime()+(days*24*60*60*1000));
var expires = d.toGMTString();
document.cookie = name+"="+value+";expires="+expires;
}
删除cookie就是将cookie的国企时间设置为0或者负数或者以前的时间。删除cokie时可以不指定cookie的值。
function delCookie(name)//删除cookie
{
document.cookie = name+"=;expires="+(new Date(0)).toGMTString();
}
完整的例子为
function setCookie(cname,cvalue,exdays){
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname+"="+cvalue+"; "+expires;
}
function getCookie(cname){
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
}
return "";
}
function checkCookie(){
var user=getCookie("username");
if (user!=""){
alert("欢迎 " + user + " 再次访问");
}
else {
user = prompt("请输入你的名字:","");
if (user!="" && user!=null){
setCookie("username",user,30);
}
}
}