一、什么是localStorage、sessionStorage
在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。
二、localStorage的优势与局限
(1).localStorage的优势
1、localStorage拓展了cookie的4K限制
2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的
(2).localStorage的局限
1、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性
2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换
3、localStorage在浏览器的隐私模式下面是不可读取的
4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡
5、localStorage不能被爬虫抓取到
在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。
二、localStorage的优势与局限
(1).localStorage的优势
1、localStorage拓展了cookie的4K限制
2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的
(2).localStorage的局限
1、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性
2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换
3、localStorage在浏览器的隐私模式下面是不可读取的
4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡
5、localStorage不能被爬虫抓取到
sessionStorage保存的数据用于浏览器的一次会话,当会话结束(通常是该窗口关闭),数据被清空;localStorage保存的数据长期存在,下一次访问该网站的时候,网页可以直接读取以前保存的数据。除了保存期限的长短不同,这两个对象的属性和方法完全一样。
简而言之:localStorage与sessionStorage的唯一一点区别就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空
三.localStorage自带api
1.清空localStorage
localStorage.clear() // undefined
console.log(localStorage ) // Storage {length: 0}
2.存储数据
localStorage.setItem("name","caibin") //存储名字为name值为caibin的变量
localStorage.name = "caibin"; // 等价于上面的命令
console.log(localStorage ) // Storage {name: "caibin", length: 1}
3.读取数据
localStorage.getItem("name") //caibin,读取保存在localStorage对象里名为name的变量的值
localStorage.name // "caibin"
localStorage.valueOf() //读取存储在localStorage上的所有数据
localStorage.key(0) // 读取第一条数据的变量名(键值)
//遍历并输出localStorage里存储的名字和值
for(var i=0; i<localStorage.length;i++){
console.log('localStorage里存储的第'+i+'条数据的名字为:'+localStorage.key(i)+',值为:'+localStorage.getItem(localStorage.key(i)));
}
4.删除某个变量
localStorage.removeItem("name"); //undefined
console.log(localStorage )// Storage {length: 0} 可以看到之前保存的name变量已经从localStorage里删除了
5.检查localStorage里是否保存某个变量
localStorage.hasOwnProperty('name') // true
localStorage.hasOwnProperty('sex') // false
6.将数组转为本地字符串
var arr = ['aa','bb','cc']; // ["aa","bb","cc"]
localStorage.arr = arr //["aa","bb","cc"]
localStorage.arr.toLocaleString(); // "aa,bb,cc"
7.将JSON存储到localStorage里
var students = {
xiaomin: {
name: "xiaoming",
grade: 1
},
teemo: {
name: "teemo",
grade: 3
}
}
students = JSON.stringify(students); //将JSON转为字符串存到变量里
console.log(students);
localStorage.setItem("students",students);//将变量存到localStorage里
var newStudents = localStorage.getItem("students");
newStudents = JSON.parse(students); //转为JSON
console.log(newStudents); // 打印出原先对象
四.列子
1.josnTable.txt
[{
"id": "1",
"bgxmmc": "血压测试1",
"jyjg00":"正常",
"jgzcbz":"提示1",
"dw0000":"次",
"ckfw00":"10-23"
}, {
"id": "2",
"bgxmmc": "血压测试2",
"jyjg00":"低于",
"jgzcbz":"提示1",
"dw0000":"次",
"ckfw00":"10-23"
}, {
"id": "3",
"bgxmmc": "血压测试3",
"jyjg00":"高于",
"jgzcbz":"提示1",
"dw0000":"次",
"ckfw00":"10-23"
},{
"id": "4",
"bgxmmc": "血压测试1",
"jyjg00":"正常",
"jgzcbz":"提示1",
"dw0000":"次",
"ckfw00":"10-23"
}, {
"id": "5",
"bgxmmc": "血压测试2",
"jyjg00":"低于",
"jgzcbz":"提示1",
"dw0000":"次",
"ckfw00":"10-23"
}, {
"id": "6",
"bgxmmc": "血压测试3",
"jyjg00":"高于",
"jgzcbz":"提示1",
"dw0000":"次",
"ckfw00":"10-23"
},{
"id": "7",
"bgxmmc": "血压测试1",
"jyjg00":"正常",
"jgzcbz":"提示1",
"dw0000":"次",
"ckfw00":"10-23"
}]
2.index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
<script src="jQuery-2.1.4.min.js"></script>
</head>
<body>
<div>
<input id="aintt" type="text" />
<input id="abtn" type="button" value="测试"/>
</div>
</body>
<script>
$(function(){
$("#abtn").on("click",function(){
var str = $("#aintt").val();
if(!str){
str="未输入,默认为空。";
}
localStorage.setItem("aintt_val",str);//存储直接输入的值
$.getJSON('jsonTable.txt',function(data){
localStorage.setItem("object",JSON.stringify(data));//存储json数据 JSON.stringify()这个方法,来将JSON转换成为JSON字符串
});
window.location.href="child1.html";
});
});
</script>
</html>
3.child1,html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
<script src="jQuery-2.1.4.min.js"></script>
</head>
<body>
<div>
<div>从index.html传过来的值为:<lable id="bdiv"></label></div>
<h1>json传值过来:</h1>
<table class="print-table"border="1">
<tr>
<th>编号</th>
<th>报告项目名称</th>
<th>结果</th>
<th>提示(结果正常标志)</th>
<th>单位</th>
<th>参考区间</th>
</tr>
</table>
</div>
</body>
<script>
$(function(){
var str=localStorage.getItem("aintt_val");
$("#bdiv").html(str);
var newStudents = JSON.parse(localStorage.getItem("object")); //取出json数据 并转成json
$.each(newStudents, function(i, result) {
item = "<tr><td>" + result['id'] + "</td>"+
"<td>" + result['bgxmmc'] + "</td>"+
"<td>" + result['jyjg00'] + "</td>"+
"<td>"+ result['jgzcbz'] + "</td>"+
"<td>" + result['dw0000'] + "</td>"+
"<td>"+ result['ckfw00'] +"</td></tr>";
$('.print-table').append(item);
});
});
</script>
</html>