HTML5 的 localStorage(本地数据库) 的用法
判断浏览器是否支持localStorage可以使用下面的代码:
if(window.localStorage){
alert("支持localStorage")
}else{
alert("暂不支持localStorage")
}
//或者 if(typeof window.localStorage == 'undefined'){ alert("浏览暂不支持localStorage") }
setItem存储value
用途:将value存储到key字段
用法:localStorage.setItem( key, value)
代码示例:
localStorage.setItem("id", "2");
getItem获取value
用途:获取指定key本地存储的值
用法:localStorage.getItem(key)
代码示例:
var value =localStorage.getItem("id");
removeItem删除key
用途:删除指定key本地存储的值
用法:localStorage.removeItem(key)
代码示例:
localStorage.removeItem("id");
clear清除所有的key/value
用途:清除所有的key/value
用法:localStorage.clear()
代码示例:
localStorage.clear();
localStorage提供的key()和length可以方便的实现存储的数据遍历,例如下面的代码:
var storage = window.localStorage;
for (var i=0, len = storage.length; i < len; i++){
var key = storage.key(i); var value = storage.getItem(key);
console.log(key + "=" + value);
}
storage事件
storage还提供了storage事件,当键值改变或者clear的时候,就可以触发storage事件,如下面的代码就添加了一个storage事件改变的监听:
if(window.addEventListener){
window.addEventListener("storage",handle_storage,false);
}else if(window.attachEvent){
window.attachEvent("onstorage",handle_storage);
} function handle_storage(e){
if(!e){
e=window.event;
}
}
storage事件对象的具体属性如下表:
| Property | Type | 描述 |
| key | String | 指定的键,添加、删除或moddified |
| oldValue | Any | (现在的前一个值覆盖),如果添加了一个新的项目或null |
| newValue | Any | 新值,或null如果一个项目是补充道 |
| url/uri | String | 页面称为引发这种变化的方法 |
下面是一些使用例子:
<!DOCTYPE html>
<html>
<head>
<script src="../Script/jquery-1.9.1.min.js" type="text/javascript"></script>
<title>localStorage</title>
<script type="text/javascript">
var productBrowseTheTraceArray = [];
if (window.localStorage) {
alert("浏览支持localStorage")
try {
if (typeof localStorage.getItem("productBrowseTheTraceJsonData") != 'undefined') {
productBrowseTheTraceArray = JSON.parse(localStorage.getItem("productBrowseTheTraceJsonData")) || []; var time = new Date().toLocaleDateString().toString().replace("/", "-").replace("/", "-"); //判断 记录 是否过期
for (var i = 0;i< productBrowseTheTraceArray.length; i++) { //循环遍历 去除 过期的数据
if (daysBetween(time, productBrowseTheTraceArray[i].productAddDateTime) >15) { //判断 数据的日期是否 大于 15
productBrowseTheTraceArray.splice(i, 1); //记录过期 移除
}
}
}
localStorage.setItem("productBrowseTheTraceJsonData", JSON.stringify(productBrowseTheTraceArray));
//browseTheTrace = localStorage.getItem("productBrowseTheTraceJsonData") || [];
} catch (e) {
Window.localStorage.clear(); //删除所有数据
localStorage.setItem("productBrowseTheTraceJsonData", JSON.stringify(productBrowseTheTraceArray));
alert("异常名字:" + e.name);
alert("异常号:" + e.number);
alert("异常的描述信息:" + e.description);
alert("异常的错误信息:" + e.message);
}
} else {
alert("浏览暂不支持localStorage")
}
//或者 if(typeof window.localStorage == 'undefined'){ alert("浏览暂不支持localStorage") } $(function () { //setItem存储value
$("#submit").click(function () {
var obj =
{
productId: $("#txtProductId").val(),
productName: $("#txtProductName").val(),
productPrice: $("#txtProductPrice").val(),
productImageUrl: $("#txtProductImageUrl").val(),
productAddDateTime: new Date().toLocaleDateString().toString().replace("/", "-").replace("/", "-")
};
alert(obj);
for (var i = 0; i < productBrowseTheTraceArray.length; i++) { //循环遍历 是否 数组里面已经存在 该数据
if (productBrowseTheTraceArray[i].productId == obj.productId) {
productBrowseTheTraceArray.splice(i, 1); //记录过期 移除
break;
}
}
productBrowseTheTraceArray.push(obj);
var jsonData = JSON.stringify(productBrowseTheTraceArray);
alert(jsonData); localStorage.setItem("productBrowseTheTraceJsonData", jsonData); }); $("#getData").click(function () {
productBrowseTheTraceArray = JSON.parse(localStorage.getItem("productBrowseTheTraceJsonData")) || [];
alert(productBrowseTheTraceArray);
var html = [];
for (var i = 0; i < productBrowseTheTraceArray.length; i++) {
html[i] = "<p>产品ID:" + productBrowseTheTraceArray[i].productId + "</p><br/><p>产品名称:" + productBrowseTheTraceArray[i].productName + "</p><br/><p>产品价格:" + productBrowseTheTraceArray[i].productPrice + "</p><br/><p>产品图片URL:" + productBrowseTheTraceArray[i].productImageUrl + "</p>";
}
$("#data").html(html.join(""));
alert(html);
}); }); //+---------------------------------------------------
//| 求两个时间的天数差 日期格式为 YYYY-MM-dd
//+---------------------------------------------------
function daysBetween(DateOne, DateTwo) {
var OneMonth = DateOne.substring(5, DateOne.lastIndexOf('-'));
var OneDay = DateOne.substring(DateOne.length, DateOne.lastIndexOf('-') + 1);
var OneYear = DateOne.substring(0, DateOne.indexOf('-')); var TwoMonth = DateTwo.substring(5, DateTwo.lastIndexOf('-'));
var TwoDay = DateTwo.substring(DateTwo.length, DateTwo.lastIndexOf('-') + 1);
var TwoYear = DateTwo.substring(0, DateTwo.indexOf('-')); var cha = ((Date.parse(OneMonth + '/' + OneDay + '/' + OneYear) - Date.parse(TwoMonth + '/' + TwoDay + '/' + TwoYear)) / 86400000);
return Math.abs(cha);
}
</script>
</head>
<body>
Key:<input type="text" id="txtKey" /><br />
产品Id:<input type="text" id="txtProductId" /><br />
产品名称:<input type="text" id="txtProductName" /><br />
产品价格:<input type="text" id="txtProductPrice" /><br />
产品图片:<input type="text" id="txtProductImageUrl" /><br />
<input type="button" id="submit" value="添加" />
<input type="button" id="getData" value="获取localStorage的值" />
<br />
<div id="data">
</div>
</body>
</html>
HTML5 的 localStorage(本地数据库) 的用法的更多相关文章
- HTML5 使用localstorage 本地存储
HTML 本地存储介绍 最早的 Cookies 自然是大家都知道,问题主要就是太小,大概也就 4KB 的样子,而且 IE6 只支持每个域名20个cookies,太少了.优势就是大家都支持,而且支持得还 ...
- HTML5 LocalStorage 本地存储的用法
本地存储变量b的值: localStorage.setItem("b","isaac"); 本地获取变量b的值: localStorage.getItem(&q ...
- 初识html5的localStorage本地存储
一.概述 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是 ...
- localStorage本地存储的用法
localStorage用法 if(window.localStorage){ alert('这个浏览器支持本地存储'); }else{ alert('这个浏览器支持不本地存储'); } localS ...
- (二)HTML5 - Web SQL 本地数据库
简介 WEB SQL Database即本地的SQLite数据库,使用的方式和方法和SQLite基本相同 判断浏览器是否支持 if (!window.openDatabase) { alert('Da ...
- HTML5 — Wed SQL 本地数据库示例
1 <!DOCTYPE html>2 <html lang="en">3 <head>4 <meta charset="UTF- ...
- 关于HTML5本地缓存技术LocalStorage 本地存储 和 SessionStorage
如果你想在用户访问的时候记录或者记住他们的行为,你会想到的是什么,cookie 和session.但今天告诉你还有两种或者说是1种吧 那就是html5的 LocalStorage 本地存储和 Sess ...
- html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
这篇文章主要介绍了html5本地存储的localstorage .本地数据库.sessionStorage简单使用示例,需要的朋友可以参考下 html5的一个非常cool的功能,就是web stora ...
- HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)
1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是c ...
- HTML5本地数据库(WebSQL)[转]
除了sessionStorage和localStorage外,HTML5还支持通过本地数据库进行本地数据存储,HTML5采用的是"SQLite"这种文件型数据库,该数据库多集中在嵌 ...
随机推荐
- 「2014-3-11」HTTP 初步探究
网络上存在很多资源,也持续不断地生成新的资源.为了新建.获取和操作这些资源,引来了两个问题:如何定位资源,如何对他们进行操作.第一个问题引申出了 URI / URL 即 uniform resourc ...
- 第53讲:Scala中结构类型实战详解
今天学习了scala的结构类型,让我们看看代码 class Structural {def open() = print("A class interface opened") } ...
- [置顶]PADS PCB功能使用技巧系列之NO.001- 如何走蛇形线?
蛇形线是布线过程中常用的一种走线方式,其主要目的是为了调节延时满足系统时序设计要求,但是设计者应该有这样的认识:蛇形线会破坏信号质量,改变传输延时,布线时要尽量避免使用,因此一块PCB上的蛇形线越多并 ...
- testng参数化(提供测试数据)【转】
testng提供测试数据的两个注释:@DataProvide和@Parameter 一.通过testng.xml中设置参数 (实际上testng.xml只是一个名字,可以起任何一个名字,只要是.x ...
- 一种简单的实现:Android一键换肤功能
现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,我把原作者的代码重新整理抽取出来,转换成Eclipse项目,重新整理成正确.可直接运行的项目. 代码运行结果如图. ...
- springmvc和struts2的差别
springmvc和struts2的区别相关内容 1.spring mvc的入口是servlet,而struts2是filter filter功能:用户可以改变一个request和修改一个resp ...
- TCP Fast Open
We know that Web services use the TCP protocol at the transport layer. Standard TCP protocol to thre ...
- mysql5.7 代价模型浅析
代价模型 mysql 5.7.10代价计算相对之前的版本有5.7 代价模型浅析较大的改进.例如 代价模型参数可以动态配置,可以适应不同的硬件 区分考虑数据在内存和在磁盘中的代价 代价精度提升为浮点型 ...
- 【Win10 UWP】后台任务与动态磁贴
动态磁贴(Live Tile)是WP系统的大亮点之一,一直以来受到广大用户的喜爱.这一讲主要研究如何在UWP应用里通过后台任务添加和使用动态磁贴功能. 从WP7到Win8,再到Win10 UWP,磁贴 ...
- 团队项目——站立会议DAY14
第十四次站立会议记录: 参会人员:张靖颜,钟灵毓秀,何玥,赵莹,王梓萱 项目进展: 1.张靖颜:修改页面,查漏补缺.进行需求分析,监督每个组员,把大家的问题都一一梳理. 2.钟灵毓秀:继续修改模块代码 ...