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"这种文件型数据库,该数据库多集中在嵌 ...
随机推荐
- Ubuntu系统网卡IP配置方法
主要文件为:/etc/network/interfaces 在没有任何配置的情况下,其内容为以下两行: auto loiface lo inet loopback 配置网口为动态获取IP的,在末尾加上 ...
- CentOS 7编译安装gcc5.3碰到的坑
下载最新的iso安装完毕后,发现gcc还是4.8版本的,就考虑升级到5.x 参考这个帖子 基本也没啥,但是执行download_prerequisites 时简直坑爹,三个压缩包都不超过2M 反复尝试 ...
- gulp 初级教程 会着让道
1.全局安装一遍: $ npm install gulp -g 2.cd 到项目的根目录 (如果跟程序配合,程序先建好程序的话,你可找到放js和css还有images的文件夹.)我当时就在这挡住了,不 ...
- HDU 1051 Wooden Sticks
题意: 有 n 根木棒,长度和质量都已经知道,需要一个机器一根一根地处理这些木棒. 该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模板的. 机器需要的准备时间如下: 1.第一根需要1 ...
- 远程连接oracle服务器
用户名 / 密码@172.16.16.203:1521/orcl
- 深入探究 WinRT 和 await
在最近发布的使用 Windows 运行时中异步性来始终保持应用程序能够快速流畅地运行这篇博文中,包含了一些如何在 C# 和 Visual Basic 中使用 await 关键字的示例,允许开发人员在使 ...
- swift语言特性
最近苹果推出了他们新的开发语言,swift,他们自己的说法是,swift语言将会更快捷,更安全等等.但是具体的性能,还需要在后面的实践过程中去观察,但是就目前来说swift语言除了将大部分21世纪静态 ...
- 两份div之间出现空隙的原因及解决方法
在一个div加有< ul><li> 因为ul有个默认的margin和padding值 如果该div中没有设边框 ul默认的值的就会对上一个div有影响 解决方法:将ul的 ...
- ps(process status)
1.PS ps -a(all):显示现行终端机下的所有进程,包括其他用户的进程: ps -ax: 同时加上x参数会显示没有控制终端的进程. ps -j:显示与作业有关的信息:会话ID.进程组ID等 ...
- WordPress页面Page和文章Post的相互转换
1. 进入phpMyAdmin: 2. 进入WordPress对应的数据库: 3. 浏览wp_posts数据表: 4. 找到相应的 页面Page 并编辑(找到相应的 文章Post 并编辑): 5. 修 ...