你的位置:首页 > Java教程

[Java教程]JS读写Cookie(设置、读取、删除)


Cookie是客户端存放数据的一种方式,可用来做状态保持。

 

1.设置Cookie:

a.固定过期时间:

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

b.自定义过期时间:

//设置自定义过期时间cookiefunction setCookie(name,value,time){  var msec = getMsec(time); //获取毫秒  var exp = new Date();  exp.setTime(exp.getTime() + msec*1);  document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();}//将字符串时间转换为毫秒,1秒=1000毫秒function getMsec(DateStr){  var timeNum=str.substring(0,str.length-1)*1; //时间数量  var timeStr=str.substring(str.length-1,str.length); //时间单位前缀,如h表示小时   if (timeStr=="s") //20s表示20秒  {    return timeNum*1000;  }  else if (timeStr=="h") //12h表示12小时  {    return timeNum*60*60*1000;  }  else if (timeStr=="d")  {    return timeNum*24*60*60*1000; //30d表示30天  }}

 

2.读取Cookie:

function getCookie(name){  var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); //正则匹配  if(arr=document.cookie.match(reg)){   return unescape(arr[2]);  }  else{   return null;  }} 

 

3.删除Cookie:

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

 

4.调用示例:

setCookie("name","hayden");alert(getCookie("name")); 

 

//设置自定义过期时间cookie
function setCookie(name,value,time)
{
    var msec = getMsec(time); //获取毫秒
    var exp = new Date();
    exp.setTime(exp.getTime() + msec*1);
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

//将字符串时间转换为毫秒,1秒=1000毫秒
function getMsec(DateStr)
{
   var timeNum=str.substring(0,str.length-1)*1; //时间数量
   var timeStr=str.substring(str.length-1,str.length); //时间单位前缀,如h表示小时
   
   if (timeStr=="s") //20s表示20秒
   {
        return timeNum*1000;
   }
   else if (timeStr=="h") //12h表示12小时
   {
       return timeNum*60*60*1000;
   }
   else if (timeStr=="d")
   {
       return timeNum*24*60*60*1000; //30d表示30天
   }
}