localStorage 和 sessionStorage
The two objects where the client stores data are:
localStorage - data storage with no time limit
SessionStorage--data storage for a session
Before using web storage, you should check if your browser supports localStorage and sessionStorage.
localStorage object
The data stored by the localStorage object has no time limit. Data is still available after the next day, week or year.
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>Self-selected course (such as about Zhihui.com)</title> </head> <body > <div id="result"> <script> if(typeof(Storage) != "undefined") { localStorage.sitename="自学教程"; document.getElementById("result").innerHTML="网站名:" + localStorage.sitename; } else { document.getElementById("result").innerHTML="对不起, 您的浏览器不支持 web 存储。" } </script> </div> </body> </html>
实例解析:
- 使用 key="sitename" 和 value="菜鸟教程" 创建一个 localStorage 键/值对。
- 检索键值为"sitename" 的值然后将数据插入 id="result"的元素中。
以上实例也可以这么写:
移除 localStorage 中的 "lastname" :
不管是 localStorage,还是 sessionStorage,可使用的API都相同,常用的有如下几个(以localStorage为例):
- 保存数据:localStorage.setItem(key,value);
- 读取数据:localStorage.getItem(key);
- 删除单个数据:localStorage.removeItem(key);
- 删除所有数据:localStorage.clear();
- 得到某个索引的key:localStorage.key(index);
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>自选教程(如约智惠.com)</title> <script> function clickCounter() { if(typeof(Storage) != "undefined") { if (localStorage.clickcount) { localStorage.clickcount=Number(localStorage.clickcount)+1; } else { localStorage.clickcount = 1; } document.getElementById("result").innerHTML="你已经点击了按钮" + localStorage.clickcount + "次"; } else { document.getElementById("result").innerHTML="对不起, 您的浏览器不支持 web 存储。" } } </script> </head> <body > <p><button onclick="clickCounter()" type="button">点我!</button></p> <div id="result"></div> <p>点击该按钮查看计数器的增加。</p> <p>关闭浏览器选项卡(或窗口),重新打开此页面,计数器将继续计数(不是重置)。</p> </body> </html>
sessionStorage 对象
sessionStorage 方法针对一个 session 进行数据存储,当用户关闭浏览器窗口后,数据会被删除。
创建并访问一个sessionStorage:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>自选教程(如约智惠.com)</title> <script> function clickCounter() { if(typeof(Storage) != "undefined") { if (sessionStorage.clickcount) { sessionStorage.clickcount=Number(sessionStorage.clickcount)+1; } else { sessionStorage.clickcount = 1; } document.getElementById("result").innerHTML="你已经点击了按钮" + sessionStorage.clickcount + "次"; } else { document.getElementById("result").innerHTML="对不起, 您的浏览器不支持 web 存储。" } } </script> </head> <body > <p><button onclick="clickCounter()" type="button">点我!</button></p> <div id="result"></div> <p>点击该按钮查看计数器的增加。</p> <p>关闭浏览器选项卡(或窗口),重新打开此页面,计数器将继续计数(不是重置)。</p> </body> </html>
Web Storage 开发一个简单的网站列表程序
网站列表程序实现以下功能:
·可以输入网站名,网址,以网站名作为key存入localStorage;
·根据网站名,查找网站;
·列出当前已保存的所有网站;
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>HTML5本地存储之Web Storage篇</title> </head> <body > <div style="border:2px dashed #ccc; width:320px;text-align:center;"> <label for="sitename">网站名(key):</label> <input type="text" id="sitename" name="sitename" class="text" /> <br /> <label for="siteurl">网 址(value)</label> <input type="text" id="siteurl" name="siteurl" /> <br /> <input type="button" onclick="save()" value="新增记录" /> <hr /> <label for="search_phone">输入网站名:</label> <input type="text" id="search_site" name="search_site"> <input type="button" onclick="find()" value="查找网站" /> <p id="find_result" ><br /></p> </div> <br /> <div id="list"></div> <script> loadAll(); function save(){ var siteurl = document.getElementById("siteurl").value; var sitename = document.getElementById("sitename").value; localStorage.setItem(sitename, siteurl); alert("添加成功"); } function find() { var search_site = document.getElementById("search_site").value; var siteurl = localStorage.getItem(search_site); var find_result = document.getElementById("find_result"); find_result.innerHTML = search_site + "的网址是:" + siteurl; } function loadAll(){ var list = document.getElementById("list"); if(localStorage.length>0){ var result = "<table border='1'>"; result += "<tr><td>key</td><td>value</td></tr>"; for(var i=0;i<localStorage.length;i++){ var sitename = localStorage.key(i); var siteurl = localStorage.getItem(sitename); result += "<tr><td>"+sitename+"</td><td>"+siteurl+"</td></tr>"; } result += "</table>"; list.innerHTML = result; }else{ list.innerHTML = "数据为空……"; } } </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>HTML5本地存储之Web Storage篇</title> </head> <body> <div style="border: 2px dashed #ccc;width:320px;text-align:center;"> <label for="keyname">别名(key):</label> <input type="text" id="keyname" name="keyname" class="text"/> <br/> <label for="sitename">网站名:</label> <input type="text" id="sitename" name="sitename" class="text"/> <br/> <label for="siteurl">网 址:</label> <input type="text" id="siteurl" name="siteurl"/> <br/> <input type="button" onclick="save()" value="新增记录"/> <hr/> <label for="search_phone">输入别名(key):</label> <input type="text" id="search_site" name="search_site"/> <input type="button" onclick="find()" value="查找网站"/> <p id="find_result"><br/></p> </div> <br/> <div id="list"> </div> <script> //保存数据 function save(){ var site = new Object; site.keyname = document.getElementById("keyname").value; site.sitename = document.getElementById("sitename").value; site.siteurl = document.getElementById("siteurl").value; var str = JSON.stringify(site); // 将对象转换为字符串 localStorage.setItem(site.keyname,str); alert("保存成功"); } //查找数据 function find(){ var search_site = document.getElementById("search_site").value; var str = localStorage.getItem(search_site); var find_result = document.getElementById("find_result"); var site = JSON.parse(str); find_result.innerHTML = search_site + "的网站名是:" + site.sitename + ",网址是:" + site.siteurl; } //将所有存储在localStorage中的对象提取出来,并展现到界面上 // 确保存储的 keyname 对应的值为转换对象,否则JSON.parse会报错 function loadAll(){ var list = document.getElementById("list"); if(localStorage.length>0){ var result = "<table border='1'>"; result += "<tr><td>别名</td><td>网站名</td><td>网址</td></tr>"; for(var i=0;i<localStorage.length;i++){ var keyname = localStorage.key(i); var str = localStorage.getItem(keyname); var site = JSON.parse(str); result += "<tr><td>"+site.keyname+"</td><td>"+site.sitename+"</td><td>"+site.siteurl+"</td></tr>"; } result += "</table>"; list.innerHTML = result; }else{ list.innerHTML = "数据为空..."; } } </script> </body> </html>
笔记
增加删除功能:
1.增加网名输入框和删除按钮
<label for="2search_phone">输入网站名:</label> <input type="text" id="delete_site" name="delete_site"/> <input type="button" onclick="remove2()" value="删除网站"/> <p id="delete_result"><br/></p>
2.增加删除函数
//删除数据 function removesite(){ var delete_site = document.getElementById("delete_site").value; var siteurl = localStorage.getItem(delete_site); var delete_result = document.getElementById("delete_result"); delete_result.innerHTML = delete_site + "的网址是:" + siteurl; localStorage.removeItem(delete_site); //删除后刷新数据列表 loadAll(); }