JavaScript 本地存储

本地存储简介

  • 在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的
  • web 应用程序能够在用户浏览器中对数据进行本地的存储
  • 解决了cookie存储空间不足的问题(cookie的存储空间为4K)
  • localStorage中一般浏览器支持的是5M大小,相当于一个5M大小的针对于前端页面的数据库
  • HTML5本地存储优于cookie

本地存储提供了两个在客户端存储数据的对象

  • localStorage:永久存储:存储没有截止日期的数据;不管从哪个页面打开,永久本地存储的数据都在
  • sessionStorage:临时存储:当页面关闭后临时本地存储的数据会删除;临时本地存储只对当前页面有效,获取不到其他页面创建的临时本地存储;从创建临时本地存储页面跳转到其他页面,临时本地存储的数据会传到跳转的页面;临时本地存储多用来页面间传值

创建和获取本地存储

方式一:使用方法创建和获取

  • 创建语法:对象.setItem(“存储名称”, “值”);

  • 获取语法:对象.getItem(“存储名称”);

  • 注意:存储名称和值始终是字符串

    <script>
        // 方式一:使用方法进行创建和获取
        //   创建语法:对象.setItem("存储名称", "值");
        //   注意:存储名称和值始终是字符串
        sessionStorage.setItem("uname", "苦涩");

        //   获取语法:对象.getItem("存储名称");
        var uname = sessionStorage.getItem("uname");
        alert(uname);
    </script>

方式二:使用属性创建和获取

  • 创建语法:对象.存储名称 = “值”;
  • 获取语法:对象.存储名称
    <script>
        // 方式二:使用属性创建和获取
        // 创建语法:对象.存储名称 = "值";
        localStorage.uname = "苦涩";

        // 获取语法:对象.存储名称
        var uname = localStorage.uname;
        alert(uname);
    </script>

创建和获取多条本地存储

  • JSON.stringify():将对象转成JSON字符串

  • JSON.parse():将JSON字符串转成对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <script>
        // -------------创建和获取多条本地存储--------------

        // 1、第一步:把对象转成JSON字符串进行创建本地存储
        // JSON.stringify():转换为JSON字符串,通常为对象或数组
        localStorage.ren = JSON.stringify({uname : "苦涩", age : 18, sex : "男"});

        // 2、第二步:把获取到的本地存储(JSON字符串)转成对象
        // JSON.parse(): 将JSON字符串转成对象
        var info = JSON.parse(localStorage.ren);
        // console.log(info);
        alert(info.uname);
    </script>
</body>
</html>


修改和删除本地存储

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <button id="btn1">修改</button>
    <button id="btn2">删除数据</button>
    <button id="btn3">删除本地存储</button>
    <button id="btn4">删除所有本地存储</button>
    <script>
        // -------------修改和删除本地存储(临时和永久都一样操作)--------------

        // 1、创建临时本地存储
        sessionStorage.ks = "苦涩";
        sessionStorage.nl = "18岁";

        // 2、修改本地存储的数据
        document.getElementById("btn1").onclick = function(){
            sessionStorage.nl = "20岁";
        }

        // 3、删除本地存储的数据,存储的名称会保留
        document.getElementById("btn2").onclick = function(){
            sessionStorage.ks = null;
        }

        // 4、删除本地存储的数据,存储的名称不会保留
        document.getElementById("btn3").onclick = function(){
            sessionStorage.removeItem("nl");
        }

        // 5、删除所有本地存储的数据,存储的名称不会保留
        document.getElementById("btn4").onclick = function(){
            sessionStorage.clear();
        }
    </script>
</body>
</html>


临时本地存储页面传值

从创建临时本地存储页面跳转到其他页面,临时本地存储的数据会传到跳转的页面

临时本地存储多用来页面间传值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>1</title>
</head>
<body>
    <a href="./test.html">跳转到2页面</a>
    <button id="btn1">跳转到2页面</button>
    <script>
        document.getElementById("btn1").onclick = function(){
            window.location.href = "./test.html";
        }

        // -------------临时本地存储页面传值--------------
        // 1、创建临时本地存储
        sessionStorage.ks = "苦涩";
        sessionStorage.nl = "18岁";
    </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>2</title>

</head>
<body>
    <button id="btn1">获取</button>

    <script>
        // -------------临时本地存储页面传值--------------
        
        document.getElementById("btn1").onclick = function(){
            alert(sessionStorage.nl);
        }

    </script>
</body>
</html>

本地存储练习

添加购物车,识别用户是否登录,用户登录信息过期时间

1.html、2.html、3.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>1号商品</title>
    <script src="./jquery-3.4.1.min.js"></script>
    <style type="text/css">
        div{
            margin-top: 50px; text-align: center;
        }
    </style>
</head>
<body>
    <div id="user"></div>
    <div>我是1号商品</div>
    <div>
        <button id="cart">加入购物车</button>
    </div>

    <script>
        $(function(){
            // 获取当前时间,并保存
            var nTime = parseInt(new Date().getTime()/1000);
            var t = nTime-localStorage.userTime;


            // 判断浏览器是否有用户信息
            if(t < 60 && localStorage.user){
                // 获取用户信息
                var user = JSON.parse(localStorage.user);
                // 把用户信息写入页面中
                $("#user").text("欢迎:" + user.un + ", 您的ID:" + user.id);
            }else{
                localStorage.user = null;
            }
            
            $("#cart").click(function(){
                // 验证是否登录了
                if(user){
                    alert("执行加入购物车代码");
                }else{
                    // 保存当前网址:1.html
                    sessionStorage.prev = window.location.href;
                    // 当前页面跳转到登录页面
                    window.location.href = "./login.html";
                }
            })
        })
    </script>
</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
    <script src="./jquery-3.4.1.min.js"></script>
    <style type="text/css">
        div{
            margin-top: 50px; text-align: center;
        }
    </style>
</head>
<body>
    <div>我是登录页面</div>
    <div>
        用户名:<input type="text" id="uname" placeholder="请输入用户名">
        <br><br>
        密码:<input type="password" id="pwd">
        <br><br>
        <input type="submit" id="sbt" value="提交">
    </div>

    <script>
        $(function(){
            $("#sbt").click(function(){
                // 1、获取用户名和密码
                var uname = $("#uname").val();
                var pwd = $("#pwd").val();

                // 2、服务器验证
                if(uname == "小新" && pwd == "123456"){
                    // 验证通过执行的代码

                    // 把用户信息保存
                    localStorage.user = JSON.stringify({un:"小新", "id":001});
                    // 获取登录时间,并保存
                    localStorage.userTime = parseInt(new Date().getTime()/1000);

                    // 跳转回原来的网址
                    window.location.href = sessionStorage.prev;
                }else{
                    alert("用户名或密码不对");
                }
            })
        })
    </script>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章