JavaScript获取cookie

JavaScript 通过 document.cookie 来获取 cookie 。

遗憾的是,document.cookie 只能获取所有 cookie 的集合,不能获取单个 cookie 。

例如,获取当前cookie集合:
?
1
2
3
4
5
6
<input id= "demo1" type= "button" value= "获取cookie" />
<script type= "text/javascript" >
document.getElementById( "demo1" ).onclick= function (){
     alert(document.cookie);
}
</script>

实例演示:


我们可以自定义一个函数来获取单个 cookie 的值。

我们知道,cookie 集合的格式是这样的:
name1=value1 ; name2=value2 ; name3=value3 ; ...
将 cookie 以分号(;)分组,再以等号(=)分组,就能得到每个 cookie 的名称和值。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
   *  func  getCookie()  获取单个cookie的值
   *  pram  cookieName  cookie的名称
**/
function getCookie(cookieName){
     var cookieObj={},
           cookieSplit=[],
           // 以分号(;)分组
           cookieArr=document.cookie.split( ";" );
     for ( var i=0,len=cookieArr.length;i<len;i++)
         if (cookieArr[i]) {
             // 以等号(=)分组
             cookieSplit=cookieArr[i].split( "=" );
             // Trim() 是自定义的函数,用来删除字符串两边的空格
             cookieObj[cookieSplit[0].Trim()]=cookieSplit[1].Trim();
         }
     return cookieObj[cookieName];
}

例如,获取 name 的值:
?
1
getCookie[ "name" ];

对上面的代码稍作修改,就可将 cookie 的值保存为对象的属性,使用时非常方便。代码如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
   *  func  getCookieObj()  获取所有cookie的值并将其保存为对象的属性
**/
function getCookieObj(){
     var cookieObj={},
           cookieSplit=[],
           // 以分号(;)分组
           cookieArr=document.cookie.split( ";" );
     for ( var i=0,len=cookieArr.length;i<len;i++)
         if (cookieArr[i]) {
             // 以等号(=)分组
             cookieSplit=cookieArr[i].split( "=" );
             // Trim() 是自定义的函数,用来删除字符串两边的空格
             cookieObj[cookieSplit[0].Trim()]=cookieSplit[1].Trim();
         }
     return cookieObj;
}

例如,获取 name 的值:
?
1
2
var cookieObj=getCookieObj();
cookieObj.name;

举例,设置并获取cookie的值:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<table>
     <tr>
         <td>用户名:</td>
         <td><input id= "demo_input1" type= "text" /></td>
         <td>密码:</td>
         <td><input id= "demo_input2" type= "text" /></td>
     </tr>
     <tr>
         <td colspan= "2" align= "center" ><input id= "demo_button1" type= "button" value= "设置Cookie" /></td>
         <td colspan= "2" align= "center" ><input id= "demo_button2" type= "button" value= "获取Cookie" /></td>
     </tr>
</table>
 
<script type= "text/javascript" >
     document.getElementById( "demo_button1" ).onclick= function (){
         var cookie_username= "username=" +escape(document.getElementById( "demo_input1" ).value)+ ";" +
                         "expire=" +(( new Date()).getTime()+600*1000);
         var cookie_password= "password=" +escape(document.getElementById( "demo_input2" ).value)+ ";" +
                         "expire=" +(( new Date()).getTime()+600*1000);
         document.cookie=cookie_username;
         document.cookie=cookie_password;
     }
     document.getElementById( "demo_button2" ).onclick= function (){
         var cookieObj=getCookieObj();
         alert(
             "用户名:" +unescape(cookieObj.username)+ "\n" +
             "密码:" +unescape(cookieObj.password)
         );
     }
</script>

实例演示:
用户名: 密码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值