【Web APIs】浏览器本地存储 ② ( window.sessionStorage 本地存储常用 API 简介 | 代码示例 )

文章目录

一、浏览器本地存储


window.sessionStorage 浏览器 本地存储 的 所有常用 API 都简单且直观 , 以 " 增、删、改、查 " 为核心 , 且 所有操作 仅作用于 当前浏览器标签页 , 符合 sessionStorage " 会话级、标签页隔离 " 的 特性 ;

1、存储 / 修改数据

window.sessionStorage#setItem(key, value) : 用于 存储 / 修改数据 ( 增 / 改 ) , 向 sessionStorage 浏览器存储 中 添加新的 key - value 键值对 , 若 key 已存在 , 则覆盖原有值 ;

  • 参数 :
    • key : 字符串类型 , 唯一标识 ( 不能重复 ) , 用于后续读取 / 删除数据 ;
    • value : 必须是 字符串类型 , 若存储对象 / 数组 , 需先通过 JSON.stringify() 序列化 ;
  • 返回值 : 无返回值 ;
  • 使用案例 :
javascript 复制代码
// 1. 存储普通字符串
window.sessionStorage.setItem('temp_form_name', '李四');

// 2. 存储对象 ( 需先序列化 ) 
const tempUser = { id: 101, phone: '13800138000' };
window.sessionStorage.setItem('temp_user', JSON.stringify(tempUser));

// 3. 覆盖已有数据 ( key重复时 ) 
window.sessionStorage.setItem('temp_form_name', '王五'); // 原"李四"被替换为"王五"

2、读取数据

window.sessionStorage#getItem(key) : 用于 读取数据 ( 查 ) , 根据指定的 key 读取 sessionStorage 本地存储 中的值 ;

  • 参数 key : 字符串类型 , 要读取的键名 ;
  • 返回值 :
    • 若 key 存在 , 返回对应的字符串值 ;
    • 若 key 不存在 , 返回 null , 直接对 null 反序列化会报错 , 建议加容错 ;
  • 代码示例 :
javascript 复制代码
// 1. 读取普通字符串
const name = window.sessionStorage.getItem('temp_form_name');
console.log(name); // 输出 : 王五

// 2. 读取对象 ( 需反序列化 , 加容错 ) 
const userStr = window.sessionStorage.getItem('temp_user');
// 容错 : 若key不存在 ( userStr为null )  , 则返回空对象
const user = userStr ? JSON.parse(userStr) : {};
console.log(user.phone); // 输出 : 13800138000

// 3. 读取不存在的key
const nonExist = window.sessionStorage.getItem('abc');
console.log(nonExist); // 输出 : null

3、删除指定数据

window.sessionStorage#removeItem(key) : 用于 删除指定数据 ( 删 ) , 根据 key 删除 sessionStorage 中对应的键值对 ; 若 key 不存在 , 该操作无效果 ,不会报错 ;

  • 参数 key : 字符串类型 , 要删除的键名 ;
  • 返回值 : 无返回值 ;
  • 代码示例 :
javascript 复制代码
// 删除指定key的数据
window.sessionStorage.removeItem('temp_form_name');
// 验证 : 读取已删除的key , 返回null
console.log(window.sessionStorage.getItem('temp_form_name')); // 输出 : null

// 删除不存在的key ( 无报错 ) 
window.sessionStorage.removeItem('abc');

4、清空所有数据

window.sessionStorage#clear() : 用于 清空所有数据 ( 全删 ) , 清空当前标签页下 sessionStorage 的所有键值对 ( 仅当前标签页 , 不影响同域名其他标签 ) ;

  • 参数 : 无参数 ;
  • 返回值 : 无返回值 ;
  • 代码示例 :
javascript 复制代码
// 清空所有数据
window.sessionStorage.clear();
// 验证 : 所有key都读取不到
console.log(window.sessionStorage.getItem('temp_user')); // 输出 : null

5、根据索引获取键名

window.sessionStorage#key(index) : 用于 根据 索引 获取 键名 , 根据数字索引 ( 从 0 开始 ) , 获取 sessionStorage 中对应位置的键名 ;

  • 参数 index : 数字类型 , 索引值 , 0 对应第一个键值对 , 1 对应第二个 , 以此类推 ;
  • 返回值 :
    • 若索引有效 , 返回对应键名字符串 ;
    • 若索引越界 , 返回 null ;
  • 代码示例 :
javascript 复制代码
// 先存储两条数据
window.sessionStorage.setItem('a', '1');
window.sessionStorage.setItem('b', '2');

// 获取索引0的键名
console.log(window.sessionStorage.key(0)); // 输出 : a
// 获取索引1的键名
console.log(window.sessionStorage.key(1)); // 输出 : b
// 索引越界 , 返回null
console.log(window.sessionStorage.key(2)); // 输出 : null

6、获取键值对数量

window.sessionStorage#length : 获取 键值对 数量 , 这是一个 属性值 , 非函数 , 返回当前 sessionStorage 中键值对的总数量 ;

  • 注意 : 该属性 是 只读属性 , 不能赋值 ;
  • 调用方式 : 无需调用 , 直接访问即可 ;
  • 代码示例 :
javascript 复制代码
// 存储两条数据后 , length为2
console.log(window.sessionStorage.length); // 输出 : 2

// 删除一条后 , length变为1
window.sessionStorage.removeItem('a');
console.log(window.sessionStorage.length); // 输出 : 1

二、代码示例 - window.sessionStorage 本地存储


1、代码示例

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <input type="text">
    <button class="set">存储数据</button>
    <button class="get">获取数据</button>
    <button class="del">删除数据</button>
    <button class="clr">清空数据</button>
    <script>
        // 获取页面中的输入框元素
        var ipt = document.querySelector('input');

        // 获取页面中类名为 set 的按钮 ( 用于设置存储 ) 
        var set = document.querySelector('.set');
        // 获取页面中类名为 get 的按钮 ( 用于获取存储 ) 
        var get = document.querySelector('.get');
        // 获取页面中类名为 del 的按钮 ( 用于删除指定存储 ) 
        var del = document.querySelector('.del');
        // 获取页面中类名为 clr 的按钮 ( 用于清空所有存储 ) 
        var clr = document.querySelector('.clr');

        // 为"设置"按钮绑定点击事件
        set.addEventListener('click', function() {
            // 获取输入框中的用户输入值
            var val = ipt.value;
            // 向 sessionStorage 中存储键为 uname、值为输入框内容的数据
            sessionStorage.setItem('uname', val);
        });

        // 为"获取"按钮绑定点击事件
        get.addEventListener('click', function() {
            // 从sessionStorage中获取键为uname的值 , 并打印到控制台
            console.log(sessionStorage.getItem('uname'));
        });

        // 为"删除"按钮绑定点击事件
        del.addEventListener('click', function() {
            // 从sessionStorage中删除键为uname的存储数据
            sessionStorage.removeItem('uname');
        });

        // 为"清空"按钮绑定点击事件
        clr.addEventListener('click', function() {
            // 清空sessionStorage中的所有存储数据
            sessionStorage.clear();
        });
    </script>
</body>

</html>

2、执行结果

在 表单 中 输入 Tom , 点击 存储数据 , 即可在 开发者模式 Application 中的 session storage 中看到 uname - Tom 键值对 ;

点击 获取数据 按钮 , 可以在 Console 控制台 打印出对应的 uname 对应的 value 值 ;

点击 删除数据 按钮 , 可以删除 uname 键值对 ;

点击 清空数据 按钮 , 可以清空 session storage 的所有 键值对数据 ;

相关推荐
郑州光合科技余经理2 小时前
私有化B2B订货系统实战:核心模块设计与代码实现
java·大数据·开发语言·后端·架构·前端框架·php
time_rg2 小时前
深入理解react——2. Concurrent Mode
前端·react.js
0_12 小时前
封装了一个vue版本 Pag组件
前端·javascript·vue.js
chillxiaohan2 小时前
GO学习踩坑记录
开发语言·学习·golang
Stirner2 小时前
A2UI : 以动态 UI 代替 LLM 文本输出的方案
前端·llm·agent
Code知行合壹2 小时前
Vue.js进阶
前端·javascript·vue.js
2301_764441332 小时前
python实现罗斯勒吸引子(Rössler Attractor)
开发语言·数据结构·python·算法·信息可视化
我叫唧唧波2 小时前
【微前端】qiankun基础
前端·前端框架
探序基因2 小时前
R语言-使用pheatmap函数画热图
开发语言·r语言