day26_缓存(cookie,storage,留言板,模拟登录注册)

知识点

  1. touchmove:网页端无效,切换成移动端才会触摸鼠标同时有效;
    修改方式:将事件添加到body中(例:多媒体案例
  2. 旋转等样式不同浏览器中不同,例如火狐中的range(滑动条)默认是竖直方向
  3. cookie等缓存是一对一或者一对多的情况,例如旅游前浏览多个地点的信息,再次打开页面时出现所有地点,但是根据输入内容确定键值对应的具体内容
    例如在留言板案例中,localstorationsetItem()的第一个值如果是定值如下图,就会一直覆盖之前内容,而时间一直在变化,所以使用时间设置缓存则会一直更新

修改前:localStorage.setItem(“data”, JSON.stringify(data));

在这里插入图片描述

修改后:localStorage.setItem(time.getTime(), JSON.stringify(data));

在这里插入图片描述
4.定义空的json对象,可以是[]或者{}

cookie

  1. 用来缓存用户信息,可以读取也可以设置
  2. 缓存
    1. 由键值对组成,内容包括一组必要的值name=value再加上另外两个可选值expire=data;path=path;
    2. 新建,每次都是建立一个新的值,上一个值不会被覆盖,但是如果当前建立的cookie和之前的cookiename 名重复,则会更改覆盖上次的内容
    3. 删除,没有办法直接删除cookie,但是因为cookie有一个有效时间,时间如果处于过期状态则当前cookie不生效,相当于删除;默认不设置时间则关闭浏览器的时候已经过期;并且失效时间是以天为单位计数,即如果只是小时上的过期数据不会被删除

3.读取
以分号为间隔截取出每一条数据,假设取第一条数据的内容,再以等号为间隔取出json数据(
4.数据的条数(长度)!= document.cookie.length;因为
document.cookie为字符串,输出的内容为字符串长度在这里插入图片描述
可以使用document.cookie.split(";").length因为
在这里插入图片描述
代码

    var time=new Date();
//    console.log(time); /*Sat Sep 14 2019 16:01:08 GMT+0800 (中国标准时间)*/

    /*设置*/
    document.cookie="src=小红;expires=Sat Sep 13 2019 12:01:08 GMT+0800";
    document.cookie="name=小明;expires=Sat Sep 14 2019 16:01:08 GMT+0800";
    /*读取*/
    var json=[];
    var data=document.cookie.split(";");

    for(var i=0;i<data.length;i++){
        var data1=data[i].split("=");
        for(var k=0;k<data1.length;k++){
            json[data1[k]]=data1[k+1];
        }
    }
    console.log(json);

storage

  1. localStorage 硬盘存储 ( 本地缓存 类似cookie 一直都在
    sessionStorage 浏览器端缓存(浏览器关闭之后清空
  2. 接口:
  • setItem() 设置缓存
  • getItem()
  • length 有多少条
  • key 通过索引获取对应条数的键
  • clear() 清除缓存
  • removeItem 清除指定
  1. length属性!而cookie没有
  2. 清除指定元素时通过key下的字符串删除
    在这里插入图片描述
    localStorage.setItem("name","小花");
    var data=localStorage.getItem("name");//小花

//    var index=localStorage.key(0);//name
//    localStorage.clear();
    localStorage.removeItem("name");
    var len=localStorage.length;//1
    console.log(len);

留言板

知识点

  1. textarea禁用大小变化为:resize:none
  2. 在使用前先清空之前存在local storage内的内容

设计思路

  1. 点击留言后将输入的值存入local storage中,为了避免一对一,应使用动态变化的key对应的字符串,如:当前时间,将json数据转换成字符串类型存储
  2. 读取数据,注意应该从后往前读,将字符串转换为json类型
  3. 动态创建div,将读取到的内容动态追加到内容框中
  4. 在函数之前要调用一次函数才能将之前输入过的留言在下一次打开浏览器时仍然存在

实现功能
在这里插入图片描述
待解决

不知道为什么,再往localstorage存数据时第2条之后位置就会改变(不再是按照时间数序往后添加),导致在留言板上的显示顺序也很乱(而不是最后的留言在最上面)

js代码

<script>
    /*元素获取*/
    localStorage.clear();
    var send = document.getElementById("send");
    var title = document.getElementById("title");
    var txt = document.getElementById("txt");
    var content=document.getElementsByClassName("content")[0];
    send.onclick = function () {
        var time = new Date();
        /*获取当前时间*/
        var titles = title.value;
        var txts = txt.value;
        console.log();
        var data = {
            "time": time.toLocaleString(), /*年月日  2019/9/14*/
            "标题": titles,
            "内容": txts
        }
        localStorage.setItem(time.getTime(), JSON.stringify(data));
        readdata();
    }
    readdata();
    function readdata() {
        content.innerHTML="";
        var len = localStorage.length-1;
        for (var i = len; i >= 0; i--) {
            var index = localStorage.key(i);
            var data=JSON.parse(localStorage.getItem(index));
            console.log(data);
            var div=document.createElement("div");
            div.innerHTML="时间: "+data.time+"标题  "+data.标题+" 内容  "+data.内容;
            content.appendChild(div);
        }
    }
</script>

模拟登录注册

实现功能

如果缓存中有数据,即上一次输入时选择“记住我”,则在网页刷新时显示该条数据,如果没有则再次输入并选择是否“记住”。因为是一对一的模式,所以存储时存储在同一位置,覆盖上次内容即可

设计思路
  1. 信息需要提交所以属于表单事件(<form action=""></form>
    html部分
<div class="block">
    <form action="" id="formLogin">
        <div class="formpart">
            账号:<input type="text" id="num"/><br/>
            密码:<input type="text" id="pwd"/><br/>
            <input type="checkbox" id="ckbox"/>记住我
            <input type="submit" value="登录"/>
        </div>
    </form>
</div>
  1. onsubmit提交事件中写入缓存(如果按钮选中,否则return false),写入缓存时先将json对象转换为字符串型
//    localStorage.clear();
    /*表单提交存储当前元素*/
    formLogin.onsubmit = function () {
        var n = num.value;
        var p = pwd.value;
        if (ckbox.checked) {
            var data = {
                "number": n,
                "password": p
            }
            localStorage.setItem("user",JSON.stringify(data));
        }
        return false;
    }
  1. 页面刷新onload事件中读取数据存入缓存,存入之前先将字符串数据转换为json对象类型
/*网页刷新显示数据*/
    window.onload=function(){
        var user=JSON.parse(localStorage.getItem("user"));
//        console.log(user);
        num.value=user.number;
        pwd.value=user.password;
    }

css样式

<style>
        * {
            padding: 0;
            margin: 0;
        }

        .block {
            width: 350px;
            height: 250px;
            border-radius: 5px;
            border: 1px solid black;
            position: absolute;//以下内容实现上下左右都居中效果
            left: 0;
            right: 0;
            top: 0;
            bottom: 0;
            margin: auto;
        }

        .formpart > input[type="text"] {
            margin: 15px;
        }

        .formpart > input[type="submit"] {
            margin: 0 25px;
            width: 60px;
            height: 40px;
        }

        .formpart {
            text-align: center;
            margin: 35px;
        }

        input {
            padding-left: 5px;
        }
    </style>
实现效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.贴吧会员登录成功后将通过Cookies保存临时信息替换原来的session存储,解决登录超时与占用服务器 资源问题 2.帖子以及作者搜索功能更加完善完善 增加查看新帖以及最新回复功能(可以在后台禁止非会员查看) 3.多处验证码,登录,注册,发帖,回复...在后台任意开启关闭 防止暴力注册发帖 垃圾广告侵扰问题 4.贴吧分类以及子分类的任意排序,以及字符长度控制 避免标题过长使页面错位 5.自定义式的贴吧首页调用,只需点动鼠标就可实现任意版面的调用(替换了原来复杂的手工修改代码然后再通过JS调用模式) 6.根据网友建议修改退出登录后会返回退出前的那个页面 7.贴吧内文章 置顶、精华、热门回复、热门点击、会员排行自动调用(每个版块的调用条数可以在后台设置) 8.吧内短信息功能,贴吧好友可以互发信息 9.凡是在帖子以及其他页面显示会员用户名的都可以点击用户名查看用户详细资料(可以在后台禁止非会员查看) 10.个人心的全新修改,增加若干新功能以及自己帖子主题以及回复内容的查看 11.无限级别分类轻松打造多样化贴吧 12.网页模板化,界面样式可以在后台随便修改,风格制作快速简单 13.会员注册页面结合JavaScript脚本人性化的提示增加用户体验(在程序内也使用了大量的JavaScript脚本) 14.是否允许会员的匿名功能(在后台有开关) 15.帖子回收站功能避免错误删除以及故意删除(可在回收站彻底删除) 16.增加IP屏蔽和禁止会员注册关键字功能 17.多处验证码,登录,注册,发帖,回复..............在后台任意开启关闭 18.广告功能,为个人网站盈利考虑放置多处广告位可填写任何广告代码 19.新的数据库备份功能,在线复制、在线压缩、在线备份、在线恢复 彻底解决木马改名运行漏洞 全新的后台界面以及简单容易的功能设置上手更容易 20.贴吧版权信息使用者可以自由修改 21.全新的贴吧投诉贴吧管理员申请,每个会员允许成为多个贴吧的吧主 22.重新设置的友情链接可以自由调动显示的先后顺序以及是否在新窗口打开链接 23.增加登陆日志功能记录贴吧的每一次登陆包括登陆成功与登陆失败 24.更改了密码找回方式增加问题回答找回密码功能 25.应部分网友要求增加了会员头像功能,使贴吧会员在吧内表现更加个性 26.全新的后台设计以及便捷下拉菜单的管理员管理方式使贴吧更加人性化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值