JavaScript中Cookies的相关使用教程

yizhihongxing

以下是JavaScript中Cookies的相关使用教程的完整攻略:

什么是Cookies?

在浏览器中,Cookies是一种小的文本文件,它存储在用户的计算机或移动设备上。Cookies通常会包含一个会话标识符,它允许网站在多个页面之间保持用户的状态。

如何创建Cookies?

创建Cookies的方法是使用JavaScript的document.cookie属性。该属性包含当前页面中所有的Cookies,并且使用分号将它们分隔开。

例如,下面的代码将创建一个名为“username”的Cookie,它的值为“John Doe”,并且在一小时后过期:

document.cookie = "username=John Doe; expires=" + new Date(Date.now() + 3600000).toUTCString();

如何读取Cookies?

要读取一个Cookie的值,可以使用JavaScript的document.cookie属性和split()方法将所有的Cookie拆分成数组。然后,遍历该数组并找到名为指定Cookie名称的项。最后,将Cookie的值从该项中提取出来。

例如,下面的代码将读取名为“username”的Cookie的值:

let cookies = document.cookie.split("; ");
for (let i = 0; i < cookies.length; i++) {
  let cookie = cookies[i].split("=");
  if (cookie[0] === "username") {
    console.log(cookie[1]);
    break;
  }
}

如何更新Cookies?

要更新一个Cookie的值,可以重新设置该Cookie,并在必要时更改其值或到期时间。

例如,下面的代码将更新名为“username”的Cookie的值为“Jane Smith”:

document.cookie = "username=Jane Smith; expires=" + new Date(Date.now() + 3600000).toUTCString();

如何删除Cookies?

要删除一个Cookie,可以将其到期时间设置为过去的日期。

例如,下面的代码将删除名为“username”的Cookie:

document.cookie = "username=; expires=" + new Date(0).toUTCString();

示例1:使用Cookies保存用户喜好

下面的代码将使用Cookies保存用户的喜好设置。当用户更改喜好设置时,将更新Cookies。

function savePreference(preferenceName, preferenceValue) {
  // 保存喜好设置
  document.cookie = preferenceName + "=" + preferenceValue + "; expires=" + new Date(Date.now() + 3600000).toUTCString();
}

function loadPreference(preferenceName) {
  // 加载喜好设置
  let cookies = document.cookie.split("; ");
  for (let i = 0; i < cookies.length; i++) {
    let cookie = cookies[i].split("=");
    if (cookie[0] === preferenceName) {
      // 返回喜好设置的值
      return cookie[1];
    }
  }
  // 如果Cookie不存在,则返回null
  return null;
}

// 创建一个保存用户喜好的表单
let form = document.createElement("form");
let input = document.createElement("input");
input.type = "checkbox";
input.name = "preference";
input.value = "darkMode";
// 将表单元素附加到文档中
form.appendChild(input);
document.body.appendChild(form);

// 当复选框的状态更改时,保存喜好设置
input.addEventListener("change", function() {
  if (this.checked) {
    savePreference("darkMode", "enabled");
  } else {
    savePreference("darkMode", "disabled");
  }
});

// 加载喜好设置并设置复选框的状态
let darkMode = loadPreference("darkMode");
if (darkMode === "enabled") {
  input.checked = true;
} else {
  input.checked = false;
}

示例2:使用Cookies实现用户登录

下面的代码将使用Cookies为用户保存登录信息,并在其未注销时保持其登录状态。当用户注销时,将删除Cookies。

function login(username, password) {
  // 检查用户名和密码是否正确
  if (username === "john" && password === "password") {
    // 保存登录信息
    document.cookie = "loggedIn=true; expires=" + new Date(Date.now() + 3600000).toUTCString();
    return true;
  } else {
    return false;
  }
}

function logout() {
  // 删除登录信息
  document.cookie = "loggedIn=; expires=" + new Date(0).toUTCString();
}

function isLoggedIn() {
  // 检查用户是否已登录
  let cookies = document.cookie.split("; ");
  for (let i = 0; i < cookies.length; i++) {
    let cookie = cookies[i].split("=");
    if (cookie[0] === "loggedIn" && cookie[1] === "true") {
      return true;
    }
  }
  return false;
}

// 创建一个登录表单
let form = document.createElement("form");
let usernameInput = document.createElement("input");
let passwordInput = document.createElement("input");
let submitButton = document.createElement("button");
usernameInput.type = "text";
usernameInput.name = "username";
passwordInput.type = "password";
passwordInput.name = "password";
submitButton.type = "submit";
// 将表单元素附加到文档中
form.appendChild(usernameInput);
form.appendChild(passwordInput);
form.appendChild(submitButton);
document.body.appendChild(form);

// 当表单被提交时,尝试登录用户
form.addEventListener("submit", function(event) {
  event.preventDefault();
  if (login(usernameInput.value, passwordInput.value)) {
    // 登录成功后重定向用户到主页
    window.location.href = "index.html";
  } else {
    // 显示登录失败的消息
    alert("Invalid username or password.");
  }
});

// 如果用户已经登录,则显示注销按钮
if (isLoggedIn()) {
  let logoutButton = document.createElement("button");
  logoutButton.type = "button";
  logoutButton.textContent = "Logout";
  document.body.appendChild(logoutButton);
  // 当注销按钮被点击时,注销用户并刷新页面
  logoutButton.addEventListener("click", function() {
    logout();
    window.location.reload();
  });
}

以上就是JavaScript中Cookies的相关使用教程的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中Cookies的相关使用教程 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Javascript中的解构赋值语法详解

    Javascript中的解构赋值语法详解 Javascript解构赋值语法是一种简洁、高效的变量声明和赋值方式,可以在一行代码中完成多个变量的赋值。在Javascript ES6中,引入了解构赋值语法,使得变量的声明和赋值变得更加简便。下面我们来详细讲解Javascript中的解构赋值语法。 一、数组解构赋值 1. 数组解构赋值介绍 数组解构赋值,指的是将数…

    JavaScript 2023年5月27日
    00
  • JavaScript 参数中的数组展开 [译]

    文章“JavaScript 参数中的数组展开 [译]”介绍了JavaScript的一个很有用的语法特性:展开运算符(spread operator)。在函数参数中使用展开运算符可以方便地将数组或对象中的内容“展开”成独立的元素,方便使用。本文将对这一语法进行详细讲解。 什么是展开运算符? 展开运算符用符号“…”表示,它可以将一个数组或者类数组对象中的所有…

    JavaScript 2023年5月27日
    00
  • 3款实用的在线JS代码工具(国外)

    3款实用的在线JS代码工具(国外) 1. JSFiddle 简介 JSFiddle 是一个在线的代码编辑器,可以用来编辑 HTML/CSS/JavaScript 代码,并且可以立即运行和分享代码。它可以在左侧编辑 HTML/CSS/JavaScript 代码,在中间显示运行结果,在右侧显示 JavaScript 控制台。 使用方法 打开 JSFiddle 的…

    JavaScript 2023年5月19日
    00
  • Element-Plus el-col、el-row快速布局及使用方法

    Element-Plus el-col、el-row快速布局及使用方法 Element-Plus是一套基于Vue3的UI框架,其中包含了el-col、el-row等快速布局组件。在本攻略中,我们将详细讲解Element-Plus中el-col、el-row的使用方法,以及如何快速进行页面布局。 el-col组件 基本用法 el-col组件用于将页面水平分成2…

    JavaScript 2023年6月10日
    00
  • 基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)

    下面我来详细讲解一下基于JavaScript实现根据手机定位获取当前具体位置的完整攻略。 准备工作 获取用户地理位置授权。在JavaScript中,我们可以通过navigator.geolocation.getCurrentPosition()方法获取用户的当前位置信息。但是在获取位置信息之前,需要向用户请求获取他们的位置授权。用于请求授权的代码如下: “…

    JavaScript 2023年6月11日
    00
  • JavaScript中各种二进制对象关系的深入讲解

    JavaScript中各种二进制对象关系的深入讲解 Buffer 在 Node.js 中,Buffer 类被用来在 TCP 流、文件系统操作、以及其他上下文中处理二进制数据流。 创建 Buffer Buffer 可以通过多种方式创建,在以下的代码片段中,我们来看如何创建一个空的 Buffer 对象。 const buf1 = Buffer.alloc(5);…

    JavaScript 2023年5月27日
    00
  • JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法

    JS中的hasOwnProperty()方法是用来检测一个属性是否是某个对象的自有属性的方法。它是基于原型链的继承机制的,只有当所查询的属性是对象本身的属性时才会返回true。 语法: object.hasOwnProperty(prop) 其中object是必需的,表示要检查属性的对象,prop参数也是必需的,表示要检查的属性名称,传入的参数是字符串类型。…

    JavaScript 2023年6月10日
    00
  • Vue Element前端应用开发之获取后端数据

    下面是关于“Vue Element前端应用开发之获取后端数据”的完整攻略。 步骤一:创建Vue Element应用 在开始之前,你需要确保已经安装了node.js和npm,因为我们将使用npm来管理Vue Element应用的依赖。接下来,我们使用Vue CLI来创建一个全新的Vue Element应用,具体步骤如下: 打开终端(macOS或Linux)或控…

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