【学习 JavaScript】 JavaScript 教程 JavaScript 简介 JavaScript 用法 JavaScript Chrome 中运行 JavaScript 输出 JavaScript 语法 JavaScript 语句 JavaScript 注释 JavaScript 变量 JavaScript 数据类型 JavaScript 对象 JavaScript 函数 JavaScript 作用域 JavaScript 事件 JavaScript 字符串 JavaScript 字符串模板 JavaScript 运算符 JavaScript 比较 JavaScript 条件语句 JavaScript switch 语句 JavaScript for 循环 JavaScript while 循环 JavaScript break 和 continue 语句 JavaScript typeof JavaScript 类型转换 JavaScript 正则表达式 JavaScript 错误 JavaScript 调试 JavaScript 变量提升 JavaScript 严格模式 JavaScript 使用误区 JavaScript 表单 JavaScript 表单验证 JavaScript 验证 API JavaScript 保留关键字 JavaScript this JavaScript let 和 const JavaScript JSON JavaScript void JavaScript 异步编程 JavaScript Promise JavaScript 代码规范 JS 函数 JavaScript 函数定义 JavaScript 函数参数 JavaScript 函数调用 JavaScript 闭包 JS 类 JavaScript 类 JavaScript 类继承 JavaScript 静态方法 JS HTML DOM DOM 简介 DOM HTML DOM CSS DOM 事件 DOM EventListener DOM 元素 HTMLCollection 对象 NodeList 对象 JS 高级教程 JavaScript prototype JavaScript Number 对象 JavaScript String JavaScript Date(日期) JavaScript Array(数组) JavaScript Boolean(布尔) JavaScript Math(算数) JavaScript RegExp 对象 JS 浏览器BOM JavaScript Window JavaScript Window Screen JavaScript Window Location JavaScript Window History JavaScript Navigator JavaScript 弹窗 JavaScript 计时事件 JavaScript Cookie JS 库 JavaScript 库 JavaScript 测试 jQuery JavaScript 测试 Prototype JS 实例 JavaScript 实例 JavaScript 对象实例 JavaScript 浏览器对象实例 JavaScript HTML DOM 实例 JavaScript 总结 JS 参考手册

JavaScript Cookie 学习笔记

什么是 Cookie?

Cookie 是浏览器中存储少量数据的一种机制。可以使用 JavaScript 来读取、创建和修改 Cookie,以便在用户访问同一网站时提供持久化数据。

创建 Cookie

我们可以使用 document.cookie 属性来创建新的 Cookie。以下是创建一个名为 username 的 Cookie 的示例:

javascriptCopy Code
document.cookie = "username=John Doe";

读取 Cookie

要读取 cookie,我们可以简单地通过 document.cookie 属性获取所有 cookie。以下是获取名为 username 的 Cookie 的示例:

javascriptCopy Code
let cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { let [name, value] = cookies[i].split('='); if (name.trim() === 'username') { console.log(value); } }

修改 Cookie

要修改 cookie 值,则只需使用与创建 cookie 相同的方法即可:

javascriptCopy Code
document.cookie = "username=Jane Doe";

需要注意的是,当修改 Cookie 时,你需要确保在 cookie 名字前添加一个“+”号,否则会将此操作视为创建一个新的 Cookie。

删除 Cookie

要删除 cookie,请设置 Cookie 的过期时间为过去的某个日期/时间:

javascriptCopy Code
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

上述示例将 username Cookie 的过期时间设置为 1970 年 1 月 1 日之前的时间,因此浏览器会将该 Cookie 视为过时并将其删除。

示例

以下是一个使用 cookie 的简单示例,用于在网站上保存用户首选色彩:

htmlCopy Code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JavaScript Cookie</title> </head> <body> <h1>JavaScript Cookie</h1> <label for="color-picker">Choose your favorite color:</label> <input type="color" id="color-picker"> <script> let colorInput = document.getElementById('color-picker'); // 检查是否有 cookie 存在 let color = readCookie('color'); if (color) { colorInput.value = color; document.body.style.backgroundColor = color; } // 添加事件监听器 colorInput.addEventListener('change', function() { document.body.style.backgroundColor = colorInput.value; createCookie('color', colorInput.value, 7); }); // 创建新 cookie function createCookie(name, value, days) { let expires = ''; if (days) { let date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + value + expires + "; path=/"; } // 读取 cookie function readCookie(name) { let nameEQ = name + "="; let cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { let cookie = cookies[i]; while (cookie.charAt(0) === ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(nameEQ) === 0) return cookie.substring(nameEQ.length, cookie.length); } return null; } </script> </body> </html>

此代码将在浏览器中显示一个颜色选择器,允许用户选择他们喜欢的颜色,并使用 cookie 在网站之间保持他们的首选颜色。