localStorage使用很简单

<!doctype html>
<html lang="en">

	<head>
		<meta charset="UTF-8" />
		<title>Document</title>
		<script type="text/javascript">
			window.onload = function() {

				window.localStorage.clear(); //清除所有的变量和值
				window.localStorage.a = 100;
				window.localStorage["b"] = 200;
				window.localStorage.setItem("c", 300);;

				console.log("window.localStorage.a=" + window.localStorage.a);
				console.log("window.localStorage[‘b‘]=" + window.localStorage["b"]);
				console.log("window.localStorage.getItem(‘c‘)=" + window.localStorage.getItem("c"));

				console.log(window.localStorage);
				console.log(typeof window.localStorage);
				for (var i = 0; i < window.localStorage.length; i++) {
					var key1 = window.localStorage.key(i);
					var key2 = window.localStorage.getItem(key1);
					console.log("字段名:" + key1 + "       值:" + key2);
				}

				console.log(typeof window.localStorage.a);
				console.log(typeof window.localStorage[‘b‘]);
				console.log(typeof window.localStorage.getItem(‘c‘));

				console.log("空了:" + window.localStorage);
				window.localStorage.SB = "我是你大爷!";
				window.localStorage.aaa = "this is test!";
				window.localStorage.removeItem("aaa");

				console.log("-------------------------------------------------");
				var storage = window.localStorage;
				var data = {
					name: ‘xiecanyong‘,
					sex: ‘man‘,
					hobby: ‘program‘
				};
				var d = JSON.stringify(data);
				console.log(typeof d);
				storage.setItem("data", d);
				console.log(storage.data);

				var json = storage.getItem("data");
				var jsonObj = JSON.parse(json);
				console.log(typeof jsonObj);
				console.log(storage.data);

			}
		</script>
	</head>

	<body>

	</body>

</html>

原文链接:http://www.cnblogs.com/st-leslie/p/5617130.html

一、什么是localStorage、sessionStorage

在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。

二、localStorage的优势与局限

localStorage的优势

1、localStorage拓展了cookie的4K限制

2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的

localStorage的局限

1、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性

2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换

3、localStorage在浏览器的隐私模式下面是不可读取的

4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡

5、localStorage不能被爬虫抓取到

localStorage与sessionStorage的唯一一点区别就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空

这里我们以localStorage来分析

三、localStorage的使用

localStorage的浏览器支持情况:

这里要特别声明一下,如果是使用IE浏览器的话,那么就要UserData来作为存储,这里主要讲解的是localStorage的内容,所以userData不做过多的解释,而且以博主个人的看法,也是没有必要去学习UserData的使用来的,因为目前的IE6/IE7属于淘汰的位置上,而且在如今的很多页面开发都会涉及到HTML5\CSS3等新兴的技术,所以在使用上面一般我们不会去对其进行兼容

首先在使用localStorage的时候,我们需要判断浏览器是否支持localStorage这个属性

if(!window.localStorage){
            alert("浏览器支持localstorage");
            return false;
        }else{
            //主逻辑业务
        }

localStorage的写入,localStorage的写入有三种方法,这里就一一介绍一下

if(!window.localStorage){
            alert("浏览器支持localstorage");
            return false;
        }else{
            var storage=window.localStorage;
            //写入a字段
            storage["a"]=1;
            //写入b字段
            storage.a=1;
            //写入c字段
            storage.setItem("c",3);
            console.log(typeof storage["a"]);
            console.log(typeof storage["b"]);
            console.log(typeof storage["c"]);
        }

运行后的结果如下:

这里要特别说明一下localStorage的使用也是遵循同源策略的,所以不同的网站直接是不能共用相同的localStorage

最后在控制台上面打印出来的结果是:

不知道各位读者有没有注意到,刚刚存储进去的是int类型,但是打印出来却是string类型,这个与localStorage本身的特点有关,localStorage只支持string类型的存储。

localStorage的读取

if(!window.localStorage){
            alert("浏览器支持localstorage");
        }else{
            var storage=window.localStorage;
            //写入a字段
            storage["a"]=1;
            //写入b字段
            storage.a=1;
            //写入c字段
            storage.setItem("c",3);
            console.log(typeof storage["a"]);
            console.log(typeof storage["b"]);
            console.log(typeof storage["c"]);
            //第一种方法读取
            var a=storage.a;
            console.log(a);
            //第二种方法读取
            var b=storage["b"];
            console.log(b);
            //第三种方法读取
            var c=storage.getItem("c");
            console.log(c);
        }

这里面是三种对localStorage的读取,其中官方推荐的是getItem\setItem这两种方法对其进行存取,不要问我这个为什么,因为这个我也不知道

我之前说过localStorage就是相当于一个前端的数据库的东西,数据库主要是增删查改这四个步骤,这里的读取和写入就相当于增、查的这两个步骤

下面我们就来说一说localStorage的删、改这两个步骤

改这个步骤比较好理解,思路跟重新更改全局变量的值一样,这里我们就以一个为例来简单的说明一下

if(!window.localStorage){
            alert("浏览器支持localstorage");
        }else{
            var storage=window.localStorage;
            //写入a字段
            storage["a"]=1;
            //写入b字段
            storage.b=1;
            //写入c字段
            storage.setItem("c",3);
            console.log(storage.a);
            // console.log(typeof storage["a"]);
            // console.log(typeof storage["b"]);
            // console.log(typeof storage["c"]);
            /*分割线*/
            storage.a=4;
            console.log(storage.a);
        }

这个在控制台上面我们就可以看到已经a键已经被更改为4了

localStorage的删除

1、将localStorage的所有内容清除

var storage=window.localStorage;
            storage.a=1;
            storage.setItem("c",3);
            console.log(storage);
            storage.clear();
            console.log(storage);

2、 将localStorage中的某个键值对删除

var storage=window.localStorage;
            storage.a=1;
            storage.setItem("c",3);
            console.log(storage);
            storage.removeItem("a");
            console.log(storage.a);

控制台查看结果

localStorage的键获取

var storage=window.localStorage;
            storage.a=1;
            storage.setItem("c",3);
            for(var i=0;i<storage.length;i++){
                var key=storage.key(i);
                console.log(key);
            }

使用key()方法,向其中出入索引即可获取对应的键

四、localStorage其他注意事项

一般我们会将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);

打印出来是Object对象

另外还有一点要注意的是,其他类型读取出来也要进行转换

时间: 2025-01-07 00:32:12

localStorage使用很简单的相关文章

王金战:改变一个差生真的很简单

当一个学生,反复遭遇失败的打击,他就变成了差生,没有一个学生生下来就注定是个差生.所以让一个差生变好真的很简单.    我刚参加工作的时候,不敢说这句话,但是我现在敢说,因为我多年的经历已经证明了这件事情.让一个差生变好真的很简单,怎么做呢?就是反其道而行之.差生是反复遭遇失败的打击后才产生的,让一个差生变好,就是让他反复享受到成功的喜悦,这个学生就会慢慢地变好了.    少年来我就用这样的方法和理念,帮着一个个学生走出困境,走向成功.我深深体会到,作为教师,作为家长,要学会欣赏孩子.特别是对那

【结果很简单,过程很艰辛】记阿里云Ons消息队列服务填坑过程

Maybe 这个问题很简单,因为解决方法是非常简单,但填坑过程会把人逼疯,在阿里云ONS工作人员.同事和朋友的协助下,经过一天的调试和瞎捣鼓,终于解决了这个坑,把问题记下来,也许更多人在碰到类似问题的时候,会开放思路.当然不得不说,Ons的.NET接口还很不完善,甚至没有独立在Windos 2008/2012服务器测试过,希望官方加把力. 1.阿里云ONS介绍 ONS(Open Notification Service)即开放消息服务,是基于阿里开源消息中间件MetaQ(RocketMQ)打造的

我的要求很简单,有历史版本功能。协作我当用不上,没有人可以协作(快盘以前是金山的,2014年快盘被迅雷收购)

国空的网盘很多,如百度,360,115,Dbank,新浪V盘等等.这些网盘的确很大,都TB级别的,但是这些网盘并不适合我的要求.我的要求很简单,有历史版本功能.协作我当用不上,没有人可以协作. 方案一:快盘的同步目录选择也很简单,直接可以在设置账号中进行选择主要同步目录.另外目录或者文件上右击也可以选择同步某一文件夹或者文件.快盘还可以定时同步,并选择不同步的文件类型.相对来说很方便了.快盘的同步机制不太了解,但是只要文档一修改保存,快盘就会自动同步.这和Dropbox比较像,但是机制是否相同就

mysql数据库很简单操作

进入linux系统 root   >/usr/bin/mysql -u root mysql>show databases;                    #查看数据库 mysql>use  testtable;                        #testtable 为所要查看的库,应用数据库 mysql>show tables;                          #查看所有表 mysql>desc abc_table          

魔咒词典------HDOJ杭电1880(字符串的处理,很简单)

Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助. 给你一部魔咒词典.当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能:当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒.如果他要的魔咒不在词典中,就输出"what?" Input 首先列出词典中不超过100000条不同的魔咒词条,每条格式

实现strcmp很简单的思维

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> void strcom(char *str1 , char *str2,int *num) { int a = 0; int count = 0; //关键在这里 用指针进行循环判断 while (*str1&&*str2) { str1++; str2++; if ((a=*str1 - *str2) != 0) { *num

怎么将pdf转换成word问题真的很简单

你还在寻找将pdf转换成word的方法吗?被网上眼花缭乱的步骤吓到了吗?你不会还在使用office word2003中的Microsoft Office Document Imaging组件来实现pdf转word工作吧.是不是太麻烦了呢?怎么将pdf转换成word问题真的很简单,不需要我们费脑筋,也不需要那么麻烦的操作,这里小编教你一个事半功倍的方法--使用迅捷pdf转换器将pdf转换成word. 经常进行文本格式转换操作的小伙伴们一定知道这款软件吧,不能再简单的操作步骤只需要三步即可完成pdf

手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单

手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 Chrome的更新速度可以说前无古人,现在我每天开机的第一件事就是打开Chrome检查是不是有了新版本.界面清爽.操作人性化.网络备份资料和快速的启动速度令我爱不释手,还有它拥有众多的扩展程序,相对于firefox的插件来说,

关于很简单的设计模式,ui-dao-database,以及JavaBean和util工具类

关于很简单的设计模式,ui-dao-database,以及JavaBean和util工具类 24. 三 / J2EE / 没有评论 简单的j2ee设计模式, UI通过DAO层访问数据库或者xml文档,数据库返回的数据通过JavaBean 封装,JavaBean是实体类是数据库中表的映射. dao层,数据持久层 JavaBean   数据传送对象,实体类. 其他的公共类 图中是基本的设计模式,和如何建立相应的包. 简单的例子: student实体类对应表中的字段 dao层,增删改查 调用DAO层方