本地存储API
一、定义
- 随着互联网的快速发展,基于网页的应用越来越普遍,同时也变得越来越复杂,为了满足各种各样的需求,会经常在本地存储大量的数据,HTML5规范提出了相关解决方案
- 本地存储设置读取方便,容量较大,sessionStorage约5M,localStorage约20M,但是只能存储字符串,但是可以将对象JSON.stringify()编码后存储
二、两种存储方式
①window.sessionStorage 生命周期为关闭浏览器窗口,在同一个窗口(页面)下数据可以共享
②window.localStorage 永久生效,除非收到删除(服务器方式访问然后清除缓存),可以多窗口(页面)共享

三、相关方法
①setItem(key,value) 设置存储内容
②getItem(key) 读取存储内容
③removeItem(key)删除键值为key的存储内容
④clear() 清除所有存储内容


四、案例:搜索历史记录
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>搜索历史记录</title>
<style>
*{
margin: 0;
padding: 0;
}
body{
margin-left: 300px;
}
ul{
list-style: none;
}
ul,li,div{
width: 250px;
padding: 10px 0;
margin-left: 10px;
border-bottom: 1px dashed #ccc;
}
a{
float: right;
}
input{
padding: 5px;
margin: 10px;
}
</style>
</head>
<body>
<input type="search" placeholder="输入搜索关键字">
<input type="button" value="搜索">
<div><a href="javascript:;">清空搜索记录</a></div>
<ul>
<li>没有搜索记录</li>
<li><span>手机</span><a href="javascript:;">删除</a></li>
<li><span>手机</span><a href="javascript:;">删除</a></li>
<li><span>手机</span><a href="javascript:;">删除</a></li>
<li><span>手机</span><a href="javascript:;">删除</a></li>
<li><span>手机</span><a href="javascript:;">删除</a></li>
</ul>
<script src="jquery.min.js"></script>
<script>
// 使用json数据存储搜索历史记录;预设一个key为historyList;采用localStorage存储
$(function(){
// 1.默认根据历史记录渲染历史列表
var historyListJson=localStorage.getItem("historyList") ||'[]';
var historyListArr=JSON.parse(historyListJson);//数组格式的数据
var render=function(){
var html='';
historyListArr.forEach(function(item,index){
html +='<li><span>'+item+'</span><a data-index="'+index+'" href="javascript:;">删除</a></li>'
});
html=html || '<li>没有搜索记录</li>';
$('ul').html(html);
}
render();
// 2.点击搜索按钮更新历史记录,并且渲染历史列表
$('[type="button"]').on('click',function(){
var value=$.trim($('[type=search]').val());
if(!value){
alert('请输入搜索关键字');
return false;
}
historyListArr.push(value);//追加一条历史记录
localStorage.setItem('historyList',JSON.stringify(historyListArr));//保存
render();//渲染
$('[type=search]').val('');//清空搜索框
});
// 3.点击删除按钮删除对应的历史记录,并且渲染历史列表
$('ul').on('click','a',function(){
var index=$(this).data('index');
historyListArr.splice(index,1);//删除
localStorage.setItem('historyList',JSON.stringify(historyListArr));//保存
render();//渲染一次
});
// 4.点击清空历史记录,清空所有的历史记录并渲染历史列表
$('div a').on('click',function(){
historyListArr=[];//清空,localStorage.clear()慎用
localStorage.setItem('historyList','');
render();
});
})
</script>
</body>
</html>

本地存储API的更多相关文章
- H5 本地存储一
localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...
- Localstorage本地存储兼容函数
前言HTML5提供了本地存储的API:localstorage对象和sessionStorage对象,实现将数据存储到用户的电脑上.Web存储易于使用.支持大容量(但非无限量)数据同时存储,同时兼容当 ...
- HTML5 本地存储 localStorage、sessionStorage 的遍历、存储大小限制处理
HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localSt ...
- H5的本地存储
localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...
- HTML5 本地存储的用法
HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localSt ...
- H5本地存储一
localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...
- HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localSt ...
- 理解 Android 本地数据存储 API
利用首选项.SQLite 和内部及外部内存 API 对于需要跨应用程序执行期间或生命期而维护重要信息的应用程序来说,能够在移动设备上本地存储数据是一种非常关键的功能.作为一名开发人员,您经常需要存储诸 ...
- 本地存储 cookie,session,localstorage( 一)基本概念及原生API
http://www.w3school.com.cn/html5/html_5_webstorage.asp http://adamed.iteye.com/blog/1698740 localSto ...
随机推荐
- iOS核心动画(专用图层篇)
之前的文章我们了解了Core Animation中图层的一些基础知识.没有看过的传送门在此: iOS核心动画基础篇 那么在了解了这些基础知识之后,接下来进入专用图层的了解 苹果为了方便和性能,封装了几 ...
- asp.net mvc 使用bootstrap的模态框插件modal
编译器:vs2012 jquery版本:jquery-1.10.2.js bootstrap:bootstrap.js v3.0.0,包含modal插件 我们要实现一个使用模态框展示从服务器获取的数据 ...
- Python3 压缩与解压缩(zlib / gzip / bz2 / lzma / zipfile / tarfile)
本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/72672703 以下代码以Python3.6.1为例 L ...
- 【洛谷 P5017】 摆渡车(斜率优化)
题目链接 算是巩固了一下斜率优化吧. 设\(f[i]\)表示前\(i\)分钟最少等待时间. 则有\(f[i]=\min_{j=0}^{i-m}f[j]+(cnt[i]-cnt[j])*i-(sum[i ...
- 【洛谷 P5341】 [TJOI2019]甲苯先生和大中锋的字符串(后缀自动机)
题目链接 建出\(sam\),求出parent tree上每个点的\(endpos\)集合大小. 如果等于\(k\),说明到达这个点的都可以.给\((len[fa(i)],len[i]]\)的\(cn ...
- Attribute与Property关系
总的来说,其实是HTML Attribute 与 DOM property之间的关系. 1 什么是Property? JS DOM Object对象有property.一个property可能是不同数 ...
- H5打开app指定页面(H5+app项目)
H5+app项目,在HBuilderX中设置 详情参考官方 https://ask.dcloud.net.cn/article/64 给h5+app设置scheme值,作用:在其它app和h5页面中启 ...
- org.springframework.dao.DuplicateKeyException: 问题
转自:https://blog.51cto.com/chengxuyuan/1786938 org.springframework.dao.DuplicateKeyException: a diffe ...
- Vue中v-model解析、sync修饰符解析
上善若水,水善利萬物而不爭.——<道德經> 简介 在平时开发是经常用到一些父子组件通信,经常用到props.vuex等等,这里面记录另外的三种方式v-model.sync是怎么使用,再说是 ...
- python多进程间通信
这里使用pipe代码如下: import time from multiprocessing import Process import multiprocessing class D: @stati ...