简要记录下localStorage在项目中的应用之一
localStorage作为HTML5本地存储web storage特性的API之一,主要作用是将数据保存在客户端中.
localStorage保存的数据,一般情况下是永久保存的,也就是说只要采用localstorage保存信息,数据便一直存储在用户的客户端中。即使用户关闭当前web浏览器后重新启动,数据仍然存在。知道用户或程序明确制定删除,数据的生命周期才会结束。 一、放入和取出:
下面介绍一个实际项目中的情况,
比如说有一个编辑页面,叫他页面A,都是可编辑,可更改的信息,如下图:

比如说一个人之前保存了这个信息,现在,他有些信息想更改。就打开了这个编辑页面,原有保存的信息会展示出来,当然,这个不是用localstorage做的,现在是,要求这个人的名字不能和其他的人重复,所以,正常的思路是 ,在姓名 onblur 的时候,走接口,从数据库验证是否有重复的,如果有重复的,就提示已存在。但是现在遇到一个问题就是,如果,这个人进入这个页面,他只是把光标在姓名的input上面点了一下,然后再失焦,前提是他并没有想改名字。但是,当他失焦的时候,会执行onblur,走接口,这样就会弹出已存在。那么该怎么解决呢?我想的解决方法是:
一进入编辑页面,就获取到姓名,然后存到localStorage里面,当失焦的时候,先把当前姓名input里面的姓名获取,并和存入localStorage的做对比,如果相同,就不走接口验证,如果不相同,在走接口验证姓名是否重复,若重复再弹出提示已存在,代码如下:
//页面一进来就把班组课名字存入localstorage
var name = $('inputName').val(),
editNameArr = [];
editNameArr.push(name);
window.localStorage.setItem('editclassArr',editNameArr);//这里的set是存入的意思,下面的get,是从localstorage中获取的意思,即再取出来。
var getProSel = window.localStorage.getItem('editclassArr');
if(window.localStorage.getItem('editclassArr') == null){
getProSel = [];
}
console.log(getProSel);
//验证是否重名
$('body').on('blur','.AA',function(event){
//console.log(getProSel.indexOf($(this).val()) != -1);//是相同的
if(getProSel.indexOf($(this).val()) != -1){//等于-1 是找不到相同的 的意思,不等于-1就是说明找到相同匹配的。
$(this).removeClass('border-red');
}else{var courseName = '',
self = $(this),
valu = self.val();
if(valu != ''){
$.ajax({
url: '',//接口地址
type: 'POST',//请求类型
data:,//参数
traditional: true,
dataType: "JSON",//数据类型
success: function(data){ }
});
}
}
})
注意:存储进去的是int类型,但是打印出来却是string类型,这个与localStorage本身的特点有关,localStorage只支持string类型的存储
二、localStorage的删除
1、清除localStorage的所有内容:
var storage=window.localStorage;
storage.a=1;
storage.setItem("b",2);
console.log(storage);
storage.clear();
console.log(storage);
2、将localStorage中的某个键值对删除:
var storage=window.localStorage;
storage.a=1;
storage.setItem("b",2);
console.log(storage);
storage.removeItem("a");
console.log(storage.a);
结果2:a=1,b=2 undefined
三、字符串转换:
一般我们会将JSON存入localStorage中,但是在localStorage会自动将localStorage转换成为字符串形式,
这个时候我们可以使用JSON.stringify()这个方法,来将JSON转换成为JSON字符串。
if(!window.localStorage){
alert("浏览器支持localstorage");
}else{
var storage=window.localStorage;
var data={
name:'xiecanyong',
sex:'man',
hobby:'program'
};
var d=JSON.stringify(data);
storage.setItem("data",d);
console.log(storage.data);
}
读取之后要将JSON字符串转换成为JSON对象,使用JSON.parse()方法
var storage=window.localStorage;
var data={
name:'xiecanyong',
sex:'man',
hobby:'program'
};
var d=JSON.stringify(data);
storage.setItem("data",d);
//将JSON字符串转换成为JSON对象输出
var json=storage.getItem("data");
var jsonObj=JSON.parse(json);
console.log(typeof jsonObj);
简要记录下localStorage在项目中的应用之一的更多相关文章
- 记录第一次在egret项目中使用Puremvc
这几天跟着另一个前端在做一个小游戏,使用的是egret引擎和puremvc框架,这对于我来说还是个比较大的突破吧,特此记录下. 因为在此项目中真是的用到了mvc及面向对象编程,值得学习 记录第一次在e ...
- [VS] - "包含了重复的“Content”项。.NET SDK 默认情况下包括你项目中的“Content”项。
copy to :http://www.cnblogs.com/jinzesudawei/p/7376916.html VS 2017 升级至 VS 2017 v15.3 后,.Net Core 1 ...
- linux环境下在springboot项目中获取项目路径(用于保存文件等)
//application.properties中设置:(file.path=static/qrfile/)//保存到static文件夹下的qrfile目录@Value("${file.pa ...
- 记录下自己VUE项目用Hbuider打包后启动白屏问题
刚用VUE做项目,之前测试时vue创建的自身项目打包都是启动OK没问题.今天打包自己的时,启动一直白屏.折磨了好久,百度了一堆.终于找到了方法. 首先是在config/index.js里面 build ...
- 记录下安装ES过程中遇到的错误及解决
1.集群配置 需要修改 cluster.name .node.name .network.host: 0.0.0.0[此处默认localhost].http.port: 9200 只要集群名相同,且机 ...
- mvvm模式下在WPF项目中动态加载项目的程序集和类
在mvvm模式的wpf项目中有个需求需要去加载解决方案的程序集,并且根据程序集去动态加载当前程序集的类,做成下拉框形式. 效果: //全局定义 private ComboBox abList= nul ...
- 记录下hbuilder vue项目打包APP 在IOS上点击延迟的问题
做的项目打包成APP在IOS 上有延迟问题,在安卓下却不会,联想到之前 用IONIC时打包的APP也是 在IOS下有300毫秒延迟问题.所以 只能 认吧. 安装fastclick 插件: npm in ...
- 记录下:nth-child在table中遇到的问题~(已解决)
首先做了一个表格,如下: <!DOCTYPE html> <html> <head> <title></title> <style t ...
- 项目中DataTables分页插件的使用
在项目开发的过程中,一般都会对表格进行分页处理,大多是情况下会在项目中配置好后台分页插件,提高效率,减轻浏览器的压力.但是有时会遇到有些数据不能直接通过分页插件操作数据库进行分页数据查询,那就需要用到 ...
随机推荐
- 动态预览Xib的实现
写一个TestView继承于UIView,然后写个对应的xib,把xib的名字设置成TestView,这是标准的用xib加载这个view必须得条件 然后xib里把这个View的backgroundCo ...
- MapReduce ChainMapper/ChainReducer
The ChainMapper class allows to use multiple Mapper classes within a single Map task. The ChainRedu ...
- REST的本质,就是用户操作某个网络资源(具有独一无二的识别符URI),获得某种服务,也就是动词+资源(都是HTTP协议的一部分)
REST的名称”表现状态转化”中,省略了主语.”表现”其实指的是资源的表现. 资源就是网络上的一个数据实体,或者说是一个具体信息.它可以是一段文本.一张图片.一首歌曲.一种服务.你可以用一个URI(统 ...
- POJ3111 K Best —— 01分数规划 二分法
题目链接:http://poj.org/problem?id=3111 K Best Time Limit: 8000MS Memory Limit: 65536K Total Submissio ...
- AjaxControlToolkit没有通过WebResource.axd加载css导致ajaxToolkit:TabPanel无法显示正确的样式
https://stackoverflow.com/questions/3318092/what-is-webresource-axd WebResource.axd provides access ...
- 让 SyntaxHighlighter 3.x 支持 Lua 语法着色
1. [代码]shBrushLua.js /** * SyntaxHighlighter * http://alexgorbatchev.com/SyntaxHighlighter * * Synta ...
- 「LuoguP3384」【模板】树链剖分
题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节点的值都加上z 操作2: 格式 ...
- Linux终端那件事儿
我们将会讨论如何更好的控制用户终端:也就说是键盘输入与屏幕输出.除了这些,我们还会了解我们编写的程序如何由用户处读取输入,即使是在输入重定向的情况下,以及确保输出到屏幕的正确位置.这里所提供的一些底层 ...
- wxPython学习笔记1
wxpython介绍: wxPython 是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的.功能键全的 GUI 用户界面. wxPython 是作为优 ...
- B - Soldier and Badges
Time Limit:3000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description Colone ...