案例效果:原生JS-实现新浪微博的增删(利用localStorage存储到浏览器中,实现刷新不清空的效果)

案例效果:原生JS-实现新浪微博的增删(利用localStorage存储到浏览器中,实现刷新不清空的效果)

实现效果:

在这里插入图片描述
html部分:

<div class="weibo">
        <textarea class="weibo-text"></textarea>
        <input class="weibo-btn" value="发布" type="button">
        <ul class="weibo-list">
        </ul>
    </div>

css样式部分:

* {
            margin: 0;
            padding: 0;
            list-style: none;
        }
        
        .weibo {
            width: 600px;
            border: 1px solid #ccc;
            margin: 100px auto;
            padding: 10px;
        }
        
        .weibo-text {
            width: 590px;
            height: 140px;
            padding: 5px;
            border: 1px solid #ccc;
            outline: none;
            resize: none;
        }
        
        .weibo-text:focus {
            border-color: #f60;
        }
        
        .weibo-btn {
            width: 80px;
            height: 30px;
            background-color: #f90;
            color: #fff;
            border: 0 none;
            margin-top: 5px;
            border-radius: 3px;
            cursor: pointer;
            outline: 0 none;
        }
        
        .weibo-list {
            padding-top: 10px;
        }
        
        .weibo-list li {
            font-size: 14px;
            line-height: 30px;
            border-bottom: 1px dotted #ccc;
            overflow: hidden;
        }
        
        .weibo-list li p {
            float: left;
        }
        
        .weibo-list li span {
            float: right;
            cursor: pointer;
        }
        
        .weibo-list li input {
            height: 24px;
            line-height: 24px;
            width: 300px;
            font-size: 14px;
            border: 0 none;
        }

js:这里我们会用到获取当前时间,先写出来,以供后期使用

 function patchZero(v) {
        return v < 10 ? '0' + v : v;
    }

    function formatDate() {
        var now = new Date();
        var y = now.getFullYear();
        var m = now.getMonth() + 1;
        var d = now.getDate();
        var h = now.getHours();
        var mm = now.getMinutes();
        var s = now.getSeconds();
        return y + '-' + patchZero(m) + '-' + patchZero(d) + ' ' + patchZero(h) + ":" + patchZero(mm) + ':' + patchZero(s);
    }

js:万事开头,先获取一波

 //获取DOM
    var btn = document.querySelector(".weibo-btn");
    var text = document.querySelector(".weibo-text");
    var ul = document.querySelector(".weibo-list");
    //初始化一个数组,为了以后存入对象使用
    var arr = [];

js:发布微博操作

//实现添加功能------------------------------------------------
    //第一步实现DOM实现添加------------
    btn.onclick = function() {
        var content = text.value;
        var time = formatDate();
        //这个位置获取id,为了后期删除使用
        var ID = Date.now() + "" + Math.random();
        //现在该要的值都有了,往DOM里面存就可以了
        //首先先要创建一个li标签
        var li = document.createElement("li");
        //li 标签需要添加html
        li.innerHTML = `
        <p>${content}</p>
        <span class="del" ID=${ID}>删除</span>
        <span>${time}</span>
        `;
        //现在将li添加到ul中
        ul.insertBefore(li, ul.children[0]);
        //好了,到了这里,以上就是DOM的添加
        //为了用户的更好的体验,我们在每次输入之后,将文本域清空
        text.value = "";

        //现在进行实现本地化(本地化就是存储到浏览器中)
        //现在我们创建一个对象
        var obj = {
            ID: ID,
            content: content,
            time: time,
        };
        //将对象存入到arr数组中
        arr.unshift(obj);
        //将数组转换成字符串
        var str = JSON.stringify(arr);
        //将字符串实现本地话
        localStorage.setItem("list", str);
    }

js:页面初始化

//页面初始化----------------------------------------------
    //我们现在浏览器中已经有了相应的数据,我们进行页面初始化
    //第一步从浏览器中获取相应的key
    var str = localStorage.getItem("list");
    //为了友好性,首先我们要判断一下str为不为空
    //str转换成arr
    if (str == null) {
        arr = [];
    } else {
        arr = JSON.parse(str);
    }
    for (var i = 0; i < arr.length; i++) {
        var li = document.createElement("li");
        li.innerHTML = `
        <p>${arr[i].content}</p>
        <span class="del" ID=${arr[i].ID}>删除</span>
        <span>${arr[i].time}</span>
        `;
        ul.append(li);
    }

js:删除微博操作

//删除操作-----------------------------------------
    var dom = document.querySelector(".weibo");
    //这里我们利用事件委托进行操作
    dom.onclick = function(e) {
        if (e.target.className == "del") {
            //第一步我们单纯的页面删除
            var li = e.target.parentNode;
            ul.removeChild(li);
            //现在我们将浏览器中的一一对应删除,删除的标识就是之前定义的id
            var ID = e.target.getAttribute("ID");

            for (var i = 0; i < arr.length; i++) {
                if (arr[i].ID == ID) {
                    arr.splice(i, 1);
                    break;
                }
            }
            //实现删除的本地化
            //这个位置在上面已经讲过了,这里不做过多的再次说明了
            var str = JSON.stringify(arr);
            localStorage.setItem("list", str);
        }
    }

未完待续,以后会再次升级此版本的,有什么疑问的欢迎大家评论

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值