js cookie的使用及封装加小案例

保持对代码的热爱并保持怀疑态度

什么是cookie?

Cookie 是一些数据, 存储于你电脑上的文本文件中。

当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。

Cookie 的作用就是用于解决 “如何记录客户端的用户信息”:

当用户访问 web 页面时,他的名字可以记录在 cookie 中。

在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。

cookie的查看

f12调出控制台,我这里暂时没有存储数据,如果存储了可以在这里看到。
在这里插入图片描述

cookie的特点

  • 在浏览器缓存中
  • 只能存文本(字符)
  • 大小限制:4K~
  • 条数限制:50条~
  • 时间限制:默认时间,会话级(关闭浏览器自动删除),可以设置指定时间
  • 不允许跨域:同源策略(同端口,同域名,同协议),浏览器,路径
  • 一般情况下:cookie需要在服务器环境下使用

cookie的语法(document.cookie)

 cookie的值的要求:
     必须是:名字=值
     必须是字符,所以意味传入的时候是对象的时候要用JSON.stringify()转为字符型数据
     名字和值中不允许出现特殊字符
     一行代码只能设置一条cookie
     第一组【名字=值】表示要存的cookie的名字和值
     之后使用分号;隔开的,表示当前这条cookie的描述
     路径,时间,域名地址
	默认路径默认时间默认服务器
	指定路径用path     path=/   为根目录
	指定时间用expries     配合日期对象使用
	如果不设置expries,默认为会话级别 session,会话级就是当你关掉浏览器即啥也没了
   var d=new Date();  //创建日期对象
    d.setDate(d.getDate()-3);
    document.cookie=("a=60;path=/;expires="+d); //三天以后

在这里插入图片描述

删除这个cookies就是让cookie过期 ,日期为过去的日期
    // 删除:让这个cookie过期
    var d = new Date;
    d.setDate(d.getDate()-1);
   document.cookie = "a=60;expires="+d;

cookie的封装

    //cookie增的封装
    function setcookie(key,val,ops){
        ops=ops || {};
        //处理路径  三目表达式简写
        var p=ops.path ?";paht="+ops.path : "";  

        // 处理有效期
        var strD="";
        if(ops.expires){
            var d =new Date();   //创建日期对象
            d.setDate=(d.getDate()+ops.expires);
            strD=";expires="+d;
            console.log(strD);
        }
        document.cookie=`${key}=${val}${p}${strD}`  //拼接
    }
    //删除  原理是过去的日期对象
    function rcookie(key){
        setcookie(key,null,{
            expires:-1
        })

    }
    //测试是否新增
    setcookie("a",60,{
        path:"/",
        expires:10
        
    })


    //读取
    function getcookie(key){
        // 获取所有cookie,并使用【; 】第一次分割,区分出每组cookie
        var cookie=document.cookie.split(";");
        // 遍历所有cookie
        for(var i=0;i<cookie.length;i++){
              // 3. 并使用【=】第二次分割,区分出每组cookie的名字和值
            // 4. 根据cookie的名字判断是否相等,取得对应的cookie的值
            if(cookie[i].split("=")[0]===key){
                return cookie[i].split("=")[1];
            }
        }
        // 以上代码执行完毕后,如果没有找到对应的cookie,那么返回空字符
        return "";
    }
    //测试能否取到
    console.log(getcookie("a"));

记住账号用户名的登录注册

布局比较简陋,甚至说毫无布局,但是这不是重点。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    账号:<input type="text" name="" id="tet1"><br>
    密码:<input type="text" name="" id="tet2"><br>
    <label for="check">记住密码</label>
    <input type="checkbox" name="" id="check"><br>
    <input type="button" name="" id="btn">
</body>
<script src="cookie.js"></script>   //引入cookie的的封装文件
<script>
 var btn=document.getElementById("btn");
 var tet1=document.getElementById("tet1");
 var tet2=document.getElementById("tet2");
 var check=document.getElementById("check");

    btn.onclick=function(){
        if(check.checked){    //判断复选框是否被选中
        var obj={    //定义一个对象用来存储登录名和密码
            un:tet1.value,
            pas:tet2.value
        }
        setcookie("msgs",JSON.stringify(obj));//将对象转成字符后,存入cookie
    }
}

var use = getcookie("msgs") ? JSON.parse(getcookie("msgs")) : {};
console.log(use);

// 根据读取到的数据,渲染到输入框
tet1.value = use.un ? use.un : "";
tet2.value = use.pas ? use.pas : "";
</script>
</html>

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

划水的乌贼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值