JavaScript中document.cookie的完整操作指南:创建、读取与删除

作者:青柠

时间:2026-10-22

浏览:520

本文详细解析JavaScript中document.cookie的用法,涵盖Cookie的基本概念、设置与读取方法。通过addCookie、getCookie和deleteCookie三个核心函数,演示如何创建、获取指定名称及删除Cookie。重点讲解path参数对Cookie访问目录的控制,以及使用toUTCString()处理过期时间的最佳实践,帮助开发者规范操作Cookie。

文章目录

Cookie基本概念

什么是Cookie?

Cookie是存储在用户计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,该Cookie便会随之发送。开发者可以使用JavaScript来创建和读取Cookie的值。

设置Cookie的方法

设置Cookie

每个Cookie本质上都是一个名/值对,你可以将如下所示的字符串赋值给document.cookie:


document.cookie="userId=828";

虽然document.cookie看起来像是一个普通属性,可以赋予不同的值,但它的行为与常规属性不同。改变其赋值并不会覆盖原有的Cookie,例如连续执行以下两条语句:


document.cookie="userId=828";
document.cookie="userName=hulk"; 

此时,浏览器将维护两个独立的Cookie,分别为userId和userName。因此,给document.cookie赋值的行为更接近于执行类似以下的语句:


document.addCookie("userId=828");
document.addCookie("userName=hulk");

实际上,浏览器正是按照这种机制来设置Cookie的。若要修改某个Cookie的值,只需重新为其赋值即可,例如:


document.cookie="userId=929";

这样便将名为userId的Cookie值更新为了929。

获取Cookie的值

获取Cookie的值

接下来介绍如何获取Cookie的值。可以直接通过document.cookie来获取:


var strCookie=document.cookie; 

这将返回一个由分号隔开的多个名/值对组成的字符串,其中包含了该域名下的所有Cookie。例如:


document.cookie="userId=828";
document.cookie="userName=hulk";
var strCookie=document.cookie;
console.log(strCookie); //userId=828; userName=hulk

当然,这需要在具体的运行环境下执行,因为它是针对当前域名下的Cookie进行获取。

由此可见,document.cookie只能一次性获取所有Cookie的值,而无法直接指定Cookie名称来获取特定值,这正是处理Cookie值时最繁琐的部分。

用户必须自行分析该字符串,以提取指定的Cookie值。例如,要获取userId的值,可以按以下方式实现:


document.cookie="userId=828";
document.cookie="userName=hulk";
var strCookie=document.cookie;
console.log(strCookie); //userId=828; userName=hulk


function getdescookie(strcookie,matchcookie){
  var getMatchCookie;
  var arrCookie=strcookie.split(";");
  for(var i=0;i<arrCookie.length;i++){
     var arr=arrCookie[i].split("=");
     if(matchcookie == arr[0]){
        getMatchCookie = arr[1];
        break;
     }
  }
  return getMatchCookie;
}

var resultCookie = getdescookie(strCookie,'userId');
console.log(resultCookie); //828

这样即可得到单个Cookie的值。

控制Cookie的访问目录

如果在某个页面创建了一个Cookie,那么该页面所在目录中的其他页面也可以访问

该Cookie。如果该目录下还有子目录,则在子目录中同样可以访问。

例如,在www.xxxx.com/html/a.html中创建的Cookie,可以被www.xxxx.com/html/b.html或www.xxx.com/html/some/c.html访问,但不能被www.xxxx.com/d.html访问。

为了控制Cookie的可访问目录,需要使用path参数来设置Cookie,语法如下:


document.cookie="name=value; path=cookieDir";

其中cookieDir表示可访问Cookie的目录。

例如:


document.cookie="userId=320; path=/shop";

这表示当前Cookie仅能在shop目录下使用。

如果要使Cookie在整个网站下可用,可以将cookie_dir指定为根目录,例如:


document.cookie="userId=320; path=/";

常用Cookie操作函数实现

常用的Cookie操作及其函数实现

addCookie

addCookie(name,value,expireHours) 该函数接收3个参数:cookie名称,cookie值,以及在多少小时后过期。


function addCookie(name,value,expireHours){
   var exdate = new Date();    
  exdate.setTime(exdate.getTime() + expireHours * 60 * 60 * 1000);    
 document.cookie = c_name + "=" + escape(value) + ((expireHours == null) ? "" : ";expires=" + exdate.toUTCString());
}

getCookie

获取指定名称的cookie值:getCookie(name)

该函数返回名称为name的cookie值,如果不存在则返回空,其实现如下:


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

或者不用正则匹配,如下面代码:


function getCookie(name){
   var strCookie=document.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 null;
}

deleteCookie

删除指定名称的cookie:deleteCookie(name)

该函数可以删除指定名称的cookie,其实现如下:


function deleteCookie(name){
  var exp = new Date();
  exp.setTime(exp.getTime() - 1);
  document.cookie = name + "=v;expires=" + exp.toUTCString();
}

说明下:这儿我用的toUTCString()方法,看了网上有的用的toGMTString()在格式化时间,但不赞成使用此方法。请使用 toUTCString() 取而代之!!在W3C中看到这句话。

以上这篇基于js中document.cookie全面解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章