HTML本地存储localStorage 和 sessionStorage的使用

举报
兴趣使然的草帽路飞 发表于 2021/06/09 01:08:34 2021/06/09
【摘要】 一、HTML 本地存储localStorage 1. localStorage的使用 ​ localStorage不受浏览器窗口进程的限制,只要使用localStorage保存的数据,即使在新打开的浏览器窗口或者浏览器关闭后,数据依然存在。 ​ 网站在页面加载完毕后可以通过JavaScript来获取这些数据。要注意的是,在不同的浏览器中localStorage存储...

一、HTML 本地存储localStorage

1. localStorage的使用

​ localStorage不受浏览器窗口进程的限制,只要使用localStorage保存的数据,即使在新打开的浏览器窗口或者浏览器关闭后,数据依然存在。

​ 网站在页面加载完毕后可以通过JavaScript来获取这些数据。要注意的是,在不同的浏览器中localStorage存储的数据是不能相互访问的,比如在Firefox中的localStorage存储的数据,是不能在IE或者Chrome中访问读取的。

判断是浏览器是否支持localStorage:

<script> function support_storage() { if (window.localStorage){ alert("true") }else { alert("false") } } window.onload=function () { support_storage() }
</script>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2. localStorage的应用场合

​ 使用localStorage存储的场合非常多,比如当一个在线的任务,需要用户填写大量的表单和数据,并且在指定的时间间隔后,才把这些数据发送到服务端。

​ 在线购物时,用户的购物车,使用localStorage可以在购物车中保存更多的数据,等用户下次再登录时,购物车中的数据依然是存在的。或者开发的离线应用程序,用户在离线状态下把数据填写好,等在线的时候,再一次性把数据进行提交。

3. localStorage的创建和使用方法

​ 每个localStorage对象都可以存储一系列key/value变量,key可看作变量名,value可看作变量值,使用JavaScript可以轻松地对key/value变量进行操作,常见的操作方法如下:

localStorage.length:返回限制已经存储的变量的个数。

localStorage.key(i):返回第i个变量的键(key)。

localStorage.getItem(key):和**localStorage.key(i)**一样,取得键为key的变量的值(读取数据)。

localStorage.setItem(key,value):和localStorage.key=value一样,设置键为key的变量值(保存数据)。

**localStorage.removeItem(key):**删除键为key对应的变量。

**localStorage.clear():**清空所有变量。

示例:

<script> function support_storage() { localStorage.setItem(1, "hello1") localStorage.setItem(2, "hello2") localStorage.setItem(3, "hello3") alert("本地存储的localStorage个数:" + localStorage.length) alert("返回第2个变量的键(key):" + localStorage.key(2)) alert("获取键为1对应的value:" + localStorage.getItem(1)) // localStorage.removeItem(1) // localStorage.clear() } window.onload = function () { support_storage() }
</script>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4. localStorage存储特殊类型

​ Web Storage不是只能处理字符串吗?那么如何存储复杂对象数据呢?

1.可以使用json对象来存储复杂对象的数据

2.利用json对象的stringify()方法,将复杂对象转变成字符串,存入Web Storage中。当Web Storage中读取时,可以通过json对象的parse()方法再转换成json对象

示例1:

<script>
	window.onload = function() {
		var jsonstr = { "id" : "1", "name" : "张三"
		};
		var jsonValue = JSON.stringify(jsonstr);//将JSON对象转换成字符串
		alert(jsonValue);
		localStorage.setItem(jsonstr.id, jsonValue);
		var jsondata=localStorage.getItem("1");
		var jsonObject=JSON.parse(jsondata);//将localStorage中的json字符串转换到JSON对象
		alert(jsonObject.name);
	}
</script>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

示例2:

<script>
	window.onload = function() {
	}
	function save() {
		var name = document.getElementById("name").value;
		var mobile = document.getElementById("mobile").value;
		var address = document.getElementById("address").value; var jsonObject = new Object();
		jsonObject.name = name;
		jsonObject.mobile = mobile;
		jsonObject.address = address; var jsonStr = JSON.stringify(jsonObject);//将JSON对象转换到字符串		
		localStorage.setItem(mobile, jsonStr);
	}
	function search() {
		var mobile = document.getElementById("inputMobile").value; var jsonStr = localStorage.getItem(mobile);
		var jsonObject = JSON.parse(jsonStr);//将localStroage中的json字符串转换成JSON对象 if (jsonObject == null) { document.getElementById("show").innerHTML = "未找到该手机对应的用户";
		} else { document.getElementById("show").innerHTML = mobile + "的机主是:" + jsonObject.name + ",地址:" + jsonObject.address;
		}
	}
	function showlist() {
		var list = document.getElementById("list");
		var html = "";
		html += "<table border='1'>";
		html += "<tr><td>手机号</td><td>机主</td><td>地址</td></tr>";
		for (var i = 0; i < localStorage.length; i++) { html += "<tr>"; var key = localStorage.key(i); var values = localStorage.getItem(key); var jsonObject = JSON.parse(values); html += "<td>" + key + "</td>"; html += "<td>" + jsonObject.name + "</td>"; html += "<td>" + jsonObject.address + "</td>"; html += "</tr>";
		}
		html += "</table>"; list.innerHTML = html;
	} window.addEventListener("storage", function(e) { alert(e.key + "的值被网页:" + e.url + ",由" + e.oldValue + "改变为:" + e.newValue); console.log("数据改变了!"); }, false); 
</script>
</head>
<body>
	姓名:
	<input type="text" id="name" />
	<br /> 手机:
	<input type="text" id="mobile" />
	<br /> 地址:
	<input type="text" id="address" />
	<br />
	<input type="button" onclick="save()" value="新增" />
	<hr />
	输入手机号:
	<input type="text" id="inputMobile">
	<input type="button" onclick="search()" value="查询机主" />
	<div id="show"></div>
	<br />
	<input type="button" onclick="showlist()" value="显示所有列表信息" />
	<div id="list"></div>
</body>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73

二、HTML 会话存储SessionStorage

1. SessionStorage的使用

​ SessionStorage和localStorage最大的一个区别是:SessionStorage数据的存储仅特定于某个会话中,也就是说数据只保持到浏览器关闭,当浏览器关闭后重新打开这个页面时,之前存储的就已经被清除。而localStorage是一个持久化的存储,并不局限于会话。

​ SessionStorage方法针对一个session进行数据存储,当用户关闭浏览器后,数据删除。如果不需要在用户新打开一个窗口依然能被访问,可以使用SessionStorage。比如:在运行某个应用的两个实例或者在运行多个窗口浏览时,不希望数据之间有关联,可以使用SessionStorage。

sessionStorage的存储数据、获取数据方法和localStorage相同,示例:

<script>
	window.onload = function() {
		sessionStorage.setItem("hobby", "唱歌");
	}
</script>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

文章来源: csp1999.blog.csdn.net,作者:兴趣使然の草帽路飞,版权归原作者所有,如需转载,请联系作者。

原文链接:csp1999.blog.csdn.net/article/details/106930038

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。