JavaScript实现cookie的操作

yizhihongxing

下面是详细讲解 JavaScript 实现 Cookie 操作的攻略。

什么是 Cookie

Cookie(中文翻译为“网页 Cookie”或者“浏览器 Cookie”)是网站为了辨别用户身份的一种标识,是存在用户本地终端上的数据。Cookie 是小型文本文件,由网站服务器发送给用户浏览器,浏览器会将其存储在本地,之后每次请求该网站时都会携带该 Cookie 信息,方便服务器进行区分识别。

JavaScript 操作 Cookie

获取 Cookie

可以通过 Document.cookie 属性获取当前网站设置的所有 Cookie。示例如下:

// 获取 Cookie 的方法
function getCookie(name) {
  let cookies = document.cookie.split("; ");
  for (let i = 0; i < cookies.length; i++) {
    let [cookieKey, cookieValue] = cookies[i].split("=");
    if (cookieKey === name) {
      // 解码 cookie 值
      return decodeURIComponent(cookieValue);
    }
  }
  return null;
}

// 例:获取 Cookie 名称为 "username" 的值
let username = getCookie("username");

设置 Cookie

调用 Document.cookie 属性可设置新的 Cookie。设置过程需要指定 Cookie 名称、Cookie 值、过期时间、路径等参数。示例如下:

// 设置 Cookie 的方法
function setCookie(name, value, expires, path) {
  let cookieText = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
  if (expires) {
    let date = new Date();
    date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);
    cookieText += `; expires=${date.toGMTString()}`;
  }
  if (path) {
    cookieText += `; path=${path}`;
  }
  document.cookie = cookieText;
}

// 例:设置 Cookie,保存用户登录信息一周
setCookie("username", "JohnDoe", 7, "/");

删除 Cookie

通过设置 Cookie 的过期时间为过去的时间,即可实现删除 Cookie。示例如下:

// 删除 Cookie 的方法
function deleteCookie(name) {
  setCookie(name, "", -1);
}

// 例:删除 Cookie 名称为 "username" 的 Cookie
deleteCookie("username");

示例说明

以下是两个对于操作 Cookie 的具体示例,供参考。

示例一:记住用户选择语言

假设现在有一个多语言的网站,用户可以通过下拉菜单选择自己喜欢的语言。网站需要记录用户的选择,以便下次用户访问时可以直接使用对应的语言,避免用户多次选择的麻烦。

当用户选择语言时,可通过设置 Cookie 保存其选择。下次用户访问网站时,可以通过读取该 Cookie 的值,自动设定对应的语言。示例如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Language Selection Demo</title>
  </head>
  <body>
    <select id="languageSelect">
      <option value="en">English</option>
      <option value="zh">中文</option>
    </select>

    <script>
      let languageSelect = document.querySelector("#languageSelect");
      let selectedLang = getCookie("lang");
      if (selectedLang) {
        languageSelect.value = selectedLang;
      }

      languageSelect.addEventListener("change", function () {
        let lang = this.value;
        setCookie("lang", lang, 7, "/");
        // 设置语言后,跳转到首页
        window.location.href = "/index.html";
      });
    </script>
  </body>
</html>

示例二:实现一个购物车

假设现在有一个网上商城,用户可以在其中添加自己喜欢的商品到购物车,最后一次性购买并结算。考虑实现一个购物车的功能,为每个用户记录所选商品及数量,下次访问时可以直接恢复用户所选内容。

当用户点击商品的“加入购物车”按钮时,可通过设置 Cookie 保存商品信息。对应的,当用户访问购物车页面时,可以通过读取该 Cookie 的值,自动显示用户所选内容。示例如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Shopping Cart Demo</title>
  </head>
  <body>
    <h2>商品列表</h2>
    <ul>
      <li>
        <span>商品 A - 价格:99 元</span>
        <button class="add-button" data-id="A">加入购物车</button>
      </li>
      <li>
        <span>商品 B - 价格:199 元</span>
        <button class="add-button" data-id="B">加入购物车</button>
      </li>
      <li>
        <span>商品 C - 价格:299 元</span>
        <button class="add-button" data-id="C">加入购物车</button>
      </li>
    </ul>
    <h2>购物车</h2>
    <ul id="cartList"></ul>

    <script>
      let addButtonList = document.querySelectorAll(".add-button");
      let cartList = document.querySelector("#cartList");
      addButtonList.forEach(function (button) {
        button.addEventListener("click", function () {
          let productId = this.dataset.id;
          let productAmount = getCookie(`product-${productId}`) || 0;
          productAmount = parseInt(productAmount) + 1;
          setCookie(`product-${productId}`, productAmount, 7, "/");
          refreshCartList();
        });
      });

      function refreshCartList() {
        cartList.innerHTML = "";
        let totalAmount = 0;
        let cookies = document.cookie.split("; ");
        for (let i = 0; i < cookies.length; i++) {
          let [cookieKey, cookieValue] = cookies[i].split("=");
          if (cookieKey.startsWith("product-")) {
            let productId = cookieKey.slice(8);
            let productName = `商品 ${productId}`;
            let productPrice = 99 * productId;
            let productAmount = parseInt(cookieValue);
            let productTotalPrice = productPrice * productAmount;
            let li = `
              <li>
                ${productName}:单价 ${productPrice} 元,数量 ${productAmount} 条,总价 ${productTotalPrice} 元
              </li>
            `;
            cartList.insertAdjacentHTML("beforeend", li);
            totalAmount += productTotalPrice;
          }
        }
        let li = `
          <li>
            总价:${totalAmount} 元
          </li>
        `;
        cartList.insertAdjacentHTML("beforeend", li);
      }

      refreshCartList();
    </script>
  </body>
</html>

以上是针对 JavaScript 实现 Cookie 操作的详细介绍及两个具体示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现cookie的操作 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 简单实现ajax获取跨域数据

    实现ajax跨域获取数据在Web开发中非常常见,由于浏览器的同源策略,直接在页面中通过ajax获取跨域数据是不允许的,但是我们可以通过JSONP和CORS两种方式来实现跨域数据获取。 JSONP JSONP(JSON with Padding)是一种基于JSON的数据交互方式,它允许我们通过在页面上动态创建标签的方式来实现跨域数据获取。JSONP的原理是利用…

    JavaScript 2023年6月11日
    00
  • 详解搭建一个vue-cli的移动端H5开发模板

    下面我将详细讲解如何搭建一个vue-cli的移动端H5开发模板。 准备工作 首先,需要安装node.js和npm。 然后,使用npm安装vue-cli:npm install -g vue-cli 创建项目 在命令行中执行以下命令创建一个基于webpack模板的vue项目: vue init webpack my-project cd my-project …

    JavaScript 2023年6月11日
    00
  • Js四则运算函数代码

    以下是Js四则运算函数代码的完整攻略: 1. 前置知识 在编写Js四则运算函数之前,需要熟悉Js语言的基础语法,尤其是关于函数定义和调用、变量声明和赋值、条件语句、循环语句等方面的知识。此外,还需要掌握JavaScript的数学运算操作符,例如加法+、减法-、乘法*、除法/等。 2. 实现思路 四则运算函数的实现可以分为以下几个步骤: 1) 从用户输入获取两…

    JavaScript 2023年5月27日
    00
  • Javascript Array toLocaleString 方法

    以下是关于JavaScript Array toLocaleString方法的完整攻略。 JavaScript Array toLocaleString方法 JavaScript Array toLocaleString方法用于将数组中的元素转换为本地字符串。该方法会将数组中的每个元素转换为字符串,并使用本地化的格式进行格式化。 下面是使用toLocaleS…

    JavaScript 2023年5月11日
    00
  • url中的特殊符号有什么含义(推荐)

    完整攻略:URL中的特殊符号有什么含义? 一、URL的基本结构 在讲解URL中的特殊符号之前,我们先来了解一下URL的基本结构。一个URL的基本格式如下: scheme://host:port/path?query#fragment 具体的说明如下: scheme:协议,如http、https、ftp等。 host:主机名或IP地址。 port:端口号,如果…

    JavaScript 2023年6月11日
    00
  • 微信小程序把百度地图坐标转换成腾讯地图坐标过程详解

    下面详细讲解将微信小程序中的百度地图坐标转换成腾讯地图坐标的过程。 1、获取百度地图坐标及腾讯地图坐标 首先,在微信小程序中,需要通过调用百度地图的API,获取到某个地点的经纬度坐标。同时,也需要调用腾讯地图的API,获取到相应位置的经纬度坐标。最终得到两个坐标系下的坐标数据。 2、转换坐标系 由于不同的地图应用使用的定位坐标系可能不同,因此需要将两个坐标系…

    JavaScript 2023年6月11日
    00
  • js实现调用网络摄像头及常见错误处理

    JS 实现调用网络摄像头及常见错误处理 调用摄像头 在网页中调用网络摄像头是一个常见的需求,在 web 中,我们可以使用 HTML5 中的 getUserMedia() 方法来获取摄像头的视频流,再利用 Canvas 技术实现对摄像头视频的处理。使用 getUserMedia() 方法时,需要用户授权方可使用摄像头。 // 判断浏览器是否支持 if (nav…

    JavaScript 2023年6月11日
    00
  • JavaScript sub方法入门实例(把字符串显示为下标)

    下面是对 “JavaScript sub方法入门实例(把字符串显示为下标)” 的详细讲解。 什么是 sub() 方法? sub() 方法可以用于生成 HTML 字符串,该字符串将其中文本的子字符串定义为下标。该方法将指定的字符串中第一个匹配的模式或者正则表达式替换为一个包含下标标签的子字符串。 sub() 方法的语法 sub() 方法的语法如下所示: str…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部