HTML5的web数据存储

一,web数据存储

就是让网页的数据在计算机上存储一段时间,可以是临时存储也可以是长期存储,如cookie

数据存储分为两种

1.1本地存储

对应localStorage对象,用于长期保存网站的数据,如有的网页登录密码保存一周等
###2.2会话存储
对应sessionStorage对象,用于临时保存,浏览器关闭数据也就没了

大多数浏览器都把本地存储限制为5MB以下


二,存储数据

假设你想存储一个用户名,那么这个名字叫“name”,你可以在文本框输入文本并弹窗读出你之前写的用户名

 var userinput = document.getElementById("userinput");
    var btn = document.getElementsByTagName("input")[1];
  
    
    btn.onclick = function(){
        localStorage["name"] = userinput.value;
        alert("名字是"+localStorage["name"]);
    }

例

而会话存储就是把localStorage换成sessionStorage。
举例如迷宫游戏中,用户每次关闭页面在重新打开页面时页面提示保存当前位置,那么就可以存储在localstorage中来记录位置
迷宫游戏
web存储支持情况

浏览器IEFirefoxChromesafarioperasafari iosAndroid
版本83.55410.522

三,删除数据

  • removeItem()方法 里面传入键名就可以删除不想要的数据
localStorage.removeItem("name")
  • clear()方法 清空本地保存会话数据

四,查找所以数据项

  • key()方法
btn3.onclick = function(){
        var ul = document.getElementsByTagName("ul")[0];
        ul.innerHTML = " ";
        for(var i=0;i<localStorage.length;i++){
            //取当前数据项的键
            var key = localStorage.key(i);
            //获取数据项的值
            var val = localStorage[key];

            var oli = document.createElement("li");
            oli.innerHTML = key+":"+val;
            ul.appendChild(oli); 
        }
    }

image.png

注意web存储数据会自动转换为文本

  • 对于数字而言
    用number()函数来处理
Number(localStorage[val])
  • 对于日期而言
    会保存一串字符串
today = new Date(sessionStorage [time]);

五,web保存对象

web存储数字和日期会自动转换为文本,那么自定义的对象怎么转换呢

为了把自定义对象存储web中,必须先把对象转换为文本形式,所以JSON编码诞生
JSON(JavaScript Object Notation)对象表示方法,是一种对象转换文本的简便格式

5.1JSON.stringify()将对象转换为文本

5.2 JSON.parse() 将文本转换为对象

如果你想将对象放在在web存储中,那么就使用**json,stringify(value)方法将值放在web存储(local,session)中,然后再从会话存储中取出用json.parse(value)**方法将其转换为对象

六,响应存储变化

就是浏览器不同窗口间的通信机制,简单来说就像我和你打视频电话,我这边的一举一动都会在你的显示器上展示出来
这里就如两个页面,第一个页面我要添加名字,那么第二个页面很快就显示出来你在第一个页面中添加的名字
那么这就是window.onstorage事件
就是你在1.html页面中改变了本地存储,那么在2.html的页面中会触发onStorage事件(必须是同台计算机相同浏览器打开的页面)
image.png
那么我在点击添加按钮时,第二个页面就显示出来了结果
image.png

当然上面两个图片涉及两个页面
第一个页面负责保存数据到本地存储

   键:<input type="text" id="key"><br>
    值:<input type="text" id="value1"><br>
    <input type="button" id="btn" value="添加" onclick="addValue()">
    <script>
      
        function addValue(){
        var key = document.getElementById("key").value;
        var value1 = document.getElementById("value1").value;
        var btn = document.getElementById("btn");
        //保存数据项
        localStorage[key] = value1;   
        }
    </script>

第二个就是在页面加载中为window.onStorage
添加一个处理函数

  <div id="update"></div>
    <script> 
    function storageChanged(e){
                var message = document.getElementById("update")
                message.innerHTML+="<br>key:"+e.key;
                message.innerHTML +="<br>value:"+e.newValue;
            }
           
        window.onload = function(){
            //将storage和storageChanged两个函数连接起来
            window.addEventListener("storage",storageChanged,false)
        } 
        
       
    </script>

当然在onStorage中也提供了许多api
原来的值oldValue
新值newValue
导致此次变化的页面URL

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心亿点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值