Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Storage官方建议为每个网站5MB。

Web Storage又分为两种:

  • sessionStorage
  • localStorage

从字面意思就可以很清楚的看出来,sessionStorage将数据保存在session中,浏览器关闭也就没了;而localStorage则一直将数据保存在客户端本地;

不管是sessionStorage,还是localStorage,可使用的API都相同,常用的有如下几个(以localStorage为例):

  • 保存数据:localStorage.setItem(key,value);
  • 读取数据:localStorage.getItem(key);
  • 删除单个数据:localStorage.removeItem(key);
  • 删除所有数据:localStorage.clear();
  • 得到某个索引的key:localStorage.key(index);

如上,key和value都必须为字符串,换言之,web Storage的API只能操作字符串。

接下来,我们通过Web Storage开发一个简单的通讯录小程序,以演示相关API的使用方法;我们要实现如下功能:

  1. 录入联系人,联系人有姓名、手机号码2个字段,以手机号作为key存入localStorage;
  2. 根据手机号码,查找机主;
  3. 列出当前已保存的所有联系人信息;

首先,准备一个简单的HTML页面,如下:

[html] view plain copy
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>HTML5本地存储之Web Storage篇</title>
  6. </head>
  7. <body>
  8. <div style="border: 2px dashed #ccc;width:320px;text-align:center;">
  9. <label for="user_name">姓名:</label>
  10. <input type="text" id="user_name" name="user_name" class="text"/>
  11. <br/>
  12. <label for="mobilephone">手机:</label>
  13. <input type="text" id="mobilephone" name="mobilephone"/>
  14. <br/>
  15. <input type="button" οnclick="save()" value="新增记录"/>
  16. <hr/>
  17. <label for="search_phone">输入手机号:</label>
  18. <input type="text" id="search_phone" name="search_phone"/>
  19. <input type="button" οnclick="find()" value="查找机主"/>
  20. <p id="find_result"><br/></p>
  21. </div>
  22. <br/>
  23. <div id="list">
  24. </div>
  25. </body>
  26. </html>

界面展现如下:

要实现联系人的保存,只需要简单实现如下JS方法即可:

[javascript] view plain copy
  1. //保存数据
  2. function save(){
  3. var mobilephone = document.getElementById("mobilephone").value;
  4. var user_name = document.getElementById("user_name").value;
  5. localStorage.setItem(mobilephone,user_name);
  6. }

要实现查找机主,则实现如下JS方法:

[javascript] view plain copy
  1. //查找数据
  2. function find(){
  3. var search_phone = document.getElementById("search_phone").value;
  4. var name = localStorage.getItem(search_phone);
  5. var find_result = document.getElementById("find_result");
  6. find_result.innerHTML = search_phone + "的机主是:" + name;
  7. }

要展现所有已保存的联系人信息,则需要使用localStorage.key(index)方法,如下:

[javascript] view plain copy
  1. //将所有存储在localStorage中的对象提取出来,并展现到界面上
  2. function loadAll(){
  3. var list = document.getElementById("list");
  4. if(localStorage.length>0){
  5. var result = "<table border='1'>";
  6. result += "<tr><td>姓名</td><td>手机号码</td></tr>";
  7. for(var i=0;i<localStorage.length;i++){
  8. var mobilephone = localStorage.key(i);
  9. var name = localStorage.getItem(mobilephone);
  10. result += "<tr><td>"+name+"</td><td>"+mobilephone+"</td></tr>";
  11. }
  12. result += "</table>";
  13. list.innerHTML = result;
  14. }else{
  15. list.innerHTML = "目前数据为空,赶紧开始加入联系人吧";
  16. }
  17. }

效果如下:


问题:如上的演示,都只有2个字段,姓名和手机号码,如果要存入更为丰富的联系人信息,比如公司名称、家庭地址等,如何实现呢?Web Storage不是只能处理字符串吗?此时,可以利用JSON的stringify()方法,将复杂对象转变成字符串,存入Web Storage中;当从Web Storage中读取时,可以通过JSON的parse()方法再转换成JSON对象;

如下简单演示增加了公司属性的联系人保存JS代码:

[javascript] view plain copy
  1. //保存数据
  2. function save(){
  3. var contact = new Object;
  4. contact.user_name = document.getElementById("user_name").value;
  5. contact.mobilephone = document.getElementById("mobilephone").value;
  6. contact.company = document.getElementById("company").value;
  7. var str = JSON.stringify(contact);
  8. localStorage.setItem(contact.mobilephone,str);
  9. loadAll();
  10. }
  11. //将所有存储在localStorage中的对象提取出来,并展现到界面上
  12. function loadAll(){
  13. var list = document.getElementById("list");
  14. if(localStorage.length>0){
  15. var result = "<table border='1'>";
  16. result += "<tr><td>姓名</td><td>手机</td><td>公司</td></tr>";
  17. for(var i=0;i<localStorage.length;i++){
  18. var mobilephone = localStorage.key(i);
  19. var str = localStorage.getItem(mobilephone);
  20. var contact = JSON.parse(str);
  21. result += "<tr><td>"+contact.user_name+"</td><td>"+contact.mobilephone+"</td><td>"+contact.company+"</td></tr>";
  22. }
  23. result += "</table>";
  24. list.innerHTML = result;
  25. }else{
  26. list.innerHTML = "目前数据为空,赶紧开始加入联系人吧";
  27. }
  28. }

效果如下:

转载于:https://www.cnblogs.com/jinhengyu/p/8051376.html

HTML5之本地存储localstorage相关推荐

  1. HTML5本地存储 localStorage

    HTML5的本地存储是大势所趋,如果仅存储在内存中,则是sessionStorage,他们的语法都是一样,仅仅是一个存储在本地文件系统中,另一个存储在内存中(随着浏览器的关闭而消失),其语句如下: l ...

  2. HTML5 本地存储 localstorage 安全分析

    在HTML5本地存储出现以前,WEB数据存储的方法已经有很多,比如HTTP Cookie,IE userData,Flash Cookie,Google Gears.其实再说细点,浏览WEB的历史记录 ...

  3. Cocos本地存储LocalStorage

    HTML5 LocalStorage 本地存储 //存档var stopResumeMenu4 = cc.MenuItemFont.create("存档", this.onSave ...

  4. html5有本地存储吗,HTML5的本地存储

    HTML5的存储方式 HTML5给我们提供了新的存取本地数据的方法. 在HTML5之前,存储主要是放在cookie文件中.但是cookie文件有其自身的局限性. cookie文件每次请求的时候都会发送 ...

  5. Vuex是什么?以及 和本地存储localstorage的区别

    先来说一下Vuex是什么? 官方给出的解释: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化 ...

  6. HTML5本地存储localStorage,sessionStorage

    HTML5新特性,用于本地存储, localStorage:不删除会一直存在斯基 sessionStorage:浏览器关掉,就跪了 /*** H5:数据存储方式,可以携带用户信息id* * 注意:* ...

  7. HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)

    一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...

  8. HTML5本地存储localstorage

    localStorage的用途 localStorage基本上就是三个特点: 数据永久被保存在本地,即使浏览器被关闭,数据也不会消失 存储空间大,一般为5~10M 存储的内容不会和服务器发生任何交互( ...

  9. HTML5的本地存储详解

    为什么80%的码农都做不了架构师?>>>    Html5 学习系列(六)Html5本地存储和本地数据库 一个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端 ...

最新文章

  1. 重磅突发!全球首富40颗卫星遭摧毁
  2. Jmeter连接SqlServer数据库进行压力测试
  3. 在自定义HttpHandler中如何使用Session
  4. Opencv 深度学习识别性别和检测年龄
  5. Mysql的select in会自动过滤重复的数据
  6. 瞎学的几天 ----java多线程和线程池
  7. python按照区间长度给定不同数量的随机数
  8. 36岁程序员:领导平时称兄道弟,裁员时立刻变脸,看透人性
  9. 中介者模式php,PHP设计模式之中介者模式
  10. Syncfusion教程:在Xamarin.Forms中创建数据输入表单 (4)
  11. sql server 连接
  12. 微观数据库整理(公开渠道获得-持续更新)
  13. 将网页内容保存为PDF及为PDF创建多级书签
  14. 2020年中国研究生数学建模竞赛E题
  15. 《孤独的青春创造不孤独的人生》
  16. 最小生成树-普利姆和克鲁斯卡尔算法
  17. 这些样机模型,全部免费下载
  18. android设备绑定微软,Android 7.1.1 手机如何登录微软账号
  19. 【jQuery】兼容IE6的图表插件Highcharts
  20. object-orientedprocedure-oriented

热门文章

  1. 【linux笔记】secureCRT使用
  2. FFmpeg源代码简单分析:内存的分配和释放(av_malloc()、av_free()等)
  3. ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法
  4. java对象命名用变量_在Java语言中,所有的变量、常量、对象和类都是用【 】来命名的。...
  5. vue中的$event
  6. 动态调试 ida linux,IDA动态调试-ELF
  7. oracle里面的degree,收集统计信息degree不生效的问题
  8. hdu 6351 Beautiful Now
  9. [leetcode] 839. 相似字符串组并查集
  10. 2016蓝桥杯C++A:网友年龄