浏览器的本地存储---localstorage

ops/2024/11/30 10:49:14/

web存储对象

Web 存储对象 localStorage  sessionStorage 允许我们在浏览器上保存键/值对。

        这两个对象保存再本地(客户端),允许保存至少 5MB 的数据(或更多),这些数据不会因为页面刷新而销毁,这表示我们可以保持对页面的访问记录的情况下刷新页面,

localStorage  sessionStorage 也有一定的区别,在实际应用中localStorage的应用范围更广

localStoragesessionStorage
在同源的所有标签页和窗口之间共享数据在当前浏览器标签页中可见,包括同源的 iframe
浏览器重启后数据仍然保留页面刷新后数据仍然保留(但标签页关闭后数据则不再保留)

两个存储对象都提供相同的方法和属性:

  • setItem(key, value) —— 存储键/值对。
  • getItem(key) —— 按照键获取值。
  • removeItem(key) —— 删除键及其对应的值。
  • clear() —— 删除所有数据。
  • key(index) —— 获取该索引下的键名。
  • length —— 存储的内容的长度。

保存数据的格式 类似"字典"(键值对),要注意键和值的数据类型应为字符进行存储,否则会被进行格式的强制转换,

基本用法

存储键/值对。

javascript">let key = "user";
let value = "password";
localStorage.setItem(key,value);let obj = {name : "tom",age : 18
}
localStorage.setItem('obj',JSON.stringify(obj));// json化对象保存为字符串形式
console.log(localStorage);

这里保存了一个键值对,打印localstorage对象可以查看到访问的数据,([object Object]的键值是应为直接存储对象被强制转换了)

这里可以看到user像对象属性一样保存在对象中,因此我们可以像访问对象属性一样去那值

javascript">console.log(localStorage.user);
// password

但是并不建议这样访问数据,因为如果数据的键值由用户生成,可能会和对象的原型继承的属性名冲突(如:length 或 toString这样的属性),所以我们采用下面的方法进行数据访问

按照键获取值。

我们可以像数组一样去循环拿到localstorage的数据

javascript">// 类数组遍历
for(let i = 0; i < localStorage.length; i++) {let key = localStorage.key(i);console.log(`${key}: ${localStorage.getItem(key)}`);
}
// for in遍历
for(let key in localStorage) {// hasOwnProperty 返回一个布尔值,若给定的属性是'非继承的'属性则返回true,继承的属性则返回falseif (!localStorage.hasOwnProperty(key)) {continue; // 跳过像 "setItem","getItem" 等这样的键}console.log(`${key}: ${localStorage.getItem(key)}`);
}
// for of遍历因为 Object.keys 只返回属于对象的键,会忽略原型上的键值。
let keys = Object.keys(localStorage);
for(let key of keys) {console.log(`${key}: ${localStorage.getItem(key)}`);
}

这里列举了三种循环遍历方法,

实例用法:输入文本自动保存

javascript">html:<textarea name="text" id="text" cols="30" rows="10" style="font-size: 3em;"></textarea>
js:
// example 输入文本自动保存
let text = document.getElementById("text");
text.oninput = ()=>{// console.log("输入事件:"+text.value);localStorage.setItem("text",text.value);console.log(localStorage.getItem("text"));
}
window.onload = ()=>{text.innerText = localStorage.getItem("text");
}

在文本域中输入内容将自动进行保存,刷新页面或关闭页面再打开任然可以在文本域中看到这段话


http://www.ppmy.cn/ops/22702.html

相关文章

QT5之lambda

使用lambda需要 配置c11 所以在点.pro文件里面配置添加如下 CONFIG c11 使用到qDebug 打印包含头文件 #include<QDebug> lambda 表达式使用 代替槽如下 #include "mainwidget.h" #include<QPushButton> #include<QDebug> mainWidget::mainWid…

大厂常见算法50题-替换空格

专栏持续更新50道算法题&#xff0c;都是大厂高频算法题&#xff0c;建议关注, 一起巧‘背’算法! 文章目录 题目解法一 String类replace方法解法二 遍历替换总结 题目 解法一 String类replace方法 String类自带的replace&#xff0c;方法传入两个char类型的参数&#xff0c;分…

20240428如何利用IDM下载磁链视频

缘起&#xff1a; https://weibo.com/tv/show/1034:4864336909500449 中国获奖独立纪录片《阿辉》揭秘红灯区“教父”的生存法则 5,751次观看 1年前 发布于 陕西 身为里中横 67.7万粉丝 互联网科技博主 微博原创视频博主 头条文章作者 https://weibo.com/tv/show/1034:4864…

VUE3与Uniapp 四 (Class变量和内联样式)

<template><!-- 通过class绑定开启或关闭某个CSS --><view class"box" :class"{box2:true}">box1</view><view class"box" :class"{box2:isActive}">box2</view><!-- 使用三元表达式实现开启关…

从旁氏三盘理论看MEME币崛起

三盘理论是加密韦陀&#xff08;thecryptoskanda&#xff09;提出的一种关于旁氏的认知模型&#xff0c;本文基于此理论来探索三次牛市的原因&#xff1a;MEME币是互助盘&#xff0c;DeFi是分红盘&#xff0c;ICO是拆分盘。 什么是三盘理论 加密韦陀认为&#xff0c;Crypto最…

Vivado-IP-DDS and Testbench Learning

DDS内部结构 实现流程 首先新建一个工程&#xff0c;创建bd文件&#xff0c;添加DDS Compiler核&#xff0c;此处不多赘述 Block Design 在观测输出的信号时&#xff0c;需要将最高位符号位的信号取反&#xff0c;这样才能输出正弦波&#xff0c;否则输出的波形如下图所示 将t…

【python】socket通信

服务器 server.py import socket #socket模块 import time #时间模块 import threading #线程模块#定义一个函数用来进行具体的数据交互,由子线程调用. def session(sock, addr):print(欢迎新 %s:%s... % addr)sock.send(bWelcome!)while True:data sock.recv(10…

【C++】const修饰输入参数

文章目录 const修饰输入参数 const修饰输入参数 在C中&#xff0c;传参时使用const可以防止在函数内部不小心修改了传入的参数&#xff0c;这样可以提高代码的健壮性和可维护性。const表示函数内部不会修改传入的参数。 以下是一个使用const修饰函数参数的例子&#xff1a; …