javascript案例17——留言发布、简易发布留言案例

一、案例描述

留言发布:最新发布的内容在最下方显示。

二、案例效果演示

请添加图片描述

三、案例局部代码

css代码:
<style>
    * {
        margin: 0;
        padding: 0;
    }
    
    #content {
        padding: 50px;
    }
    
    textarea {
        width: 300px;
        height: 200px;
        box-shadow: 0 0 5px #4CB02A;
        border-radius: 5px;
        outline: none;
        border: 1px solid #4CB02A;
        padding: 10px;
        box-sizing: border-box;
    }
    
    button {
        border: none;
        background: none;
        width: 300px;
        height: 50px;
        background-color: #4CB02A;
        color: #fff;
        border-radius: 5px;
        font-size: 16px;
    }
    
    h4 {
        margin-top: 30px;
        margin-bottom: 10px;
    }
    
    ul li {
        background-color: #4CB02A;
        width: 400px;
        color: #fff;
        padding: 5px 30px 5px 5px;
        box-sizing: border-box;
        list-style-position: inside;
        margin-bottom: 10px;
        font-size: 12px;
        position: relative;
        word-break: break-all;
    }
    
    ul li img {
        width: 20px;
        height: 20px;
        position: absolute;
        right: 5px;
        top: 50%;
        transform: translate(0, -50%);
    }
</style>
html代码:
<div id="content">
    <textarea name="txt"></textarea><br />
    <button>发布</button>
    <h4>留言如下:</h4>
    <ul>
    </ul>
</div>
js代码方法1:
<script>
   // 获取文本域元素
    var textarea = document.querySelector('textarea');
    // 获取按钮元素
    var btn = document.querySelector('button');
    // 获取ul元素
    var ul = document.querySelector('ul');
    // 注册事件
    btn.onclick = function() {
        if (textarea.value == '') {
            // 填入的内容为空,提示一下
            alert('您没有输入内容');
        } else {
            // 创建一个新的li元素
            var li = document.createElement('li');
            // 不光把文本框内的值赋过去, 我还创建了一个删除按钮。 回头可以添加删除发言的功能
            li.innerHTML = textarea.value + '<img src="./img/delete.png"/>';
            console.log(li);
            ul.appendChild(li); //后面插入
            // ul.insertBefore(li, ul.children[0]); //前面插入
            // 发布成功之后,将文本域中的内容清空一下
            textarea.value = '';
            // 此时,操作基本完成,现在要完成删除发言的功能。
            var img = li.children[0];
            img.onclick = function() {
                // ul.removeChild(li);//小方法一
                this.parentNode.remove(); //小方法二
            }
        }
    }
</script>
js代码方法2:
<script>
        // 获取文本域元素
        var textarea = document.querySelector('textarea');
        // 获取按钮元素
        var btn = document.querySelector('button');
        // 获取ul元素
        var ul = document.querySelector('ul');
        // 注册事件
        btn.onclick = function() {
            if (textarea.value == '') {
                // 填入的内容为空,提示一下
                alert('您没有输入内容');
            } else {
                // 创建一个新的li元素
                var li = document.createElement('li');
                // 不光把文本框内的值赋过去, 我还创建了一个删除按钮。 回头可以添加删除发言的功能
                // li.innerHTML = textarea.value + '<a href="#">删除</a>';
                li.innerHTML = textarea.value + '<img src="./img/delete.png"/>';
                console.log(li);
                ul.appendChild(li); //后面插入
                // ul.insertBefore(li, ul.children[0]); //前面插入
                // 发布成功之后,将文本域中的内容清空一下
                textarea.value = '';
                // 此时,操作基本完成,现在要完成删除发言的功能。
                // 删除:获取所有的删除图片,遍历绑定点击事件
                var as = document.querySelectorAll('img');
                for (var i = 0; i < as.length; i++) {
                    as[i].onclick = function() {
                        // ul.removeChild(this.parentNode);//小方法一
                        this.parentNode.remove(); //小方法二
                    }
                }
            }
        }
</script>

四、案例整体代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>留言发布案例</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        #content {
            padding: 50px;
        }
        
        textarea {
            width: 300px;
            height: 200px;
            box-shadow: 0 0 5px #4CB02A;
            border-radius: 5px;
            outline: none;
            border: 1px solid #4CB02A;
            padding: 10px;
            box-sizing: border-box;
        }
        
        button {
            border: none;
            background: none;
            width: 300px;
            height: 50px;
            background-color: #4CB02A;
            color: #fff;
            border-radius: 5px;
            font-size: 16px;
        }
        
        h4 {
            margin-top: 30px;
            margin-bottom: 10px;
        }
        
        ul li {
            background-color: #4CB02A;
            width: 400px;
            color: #fff;
            padding: 5px 30px 5px 5px;
            box-sizing: border-box;
            list-style-position: inside;
            margin-bottom: 10px;
            font-size: 12px;
            position: relative;
            word-break: break-all;
        }
        
        ul li img {
            width: 20px;
            height: 20px;
            position: absolute;
            right: 5px;
            top: 50%;
            transform: translate(0, -50%);
        }
    </style>
</head>
<body>
    <div id="content">
        <textarea name="txt"></textarea><br />
        <button>发布</button>
        <h4>留言如下:</h4>
        <ul>
        </ul>
    </div>

    <script>
        // 获取文本域元素
        var textarea = document.querySelector('textarea');
        // 获取按钮元素
        var btn = document.querySelector('button');
        // 获取ul元素
        var ul = document.querySelector('ul');
        // 注册事件
        btn.onclick = function() {
            if (textarea.value == '') {
                // 填入的内容为空,提示一下
                alert('您没有输入内容');
            } else {
                // 创建一个新的li元素
                var li = document.createElement('li');
                // 不光把文本框内的值赋过去, 我还创建了一个删除按钮。 回头可以添加删除发言的功能
                // li.innerHTML = textarea.value + '<a href="#">删除</a>';//这种是文字版的删除
                li.innerHTML = textarea.value + '<img src="./img/delete.png"/>'; //这种是图片垃圾桶版的删除
                console.log(li);
                ul.appendChild(li); //后面插入
                // ul.insertBefore(li, ul.children[0]); //前面插入
                // 发布成功之后,将文本域中的内容清空一下
                textarea.value = '';
                // 此时,操作基本完成,现在要完成删除发言的功能。
                // 大方法一:获取所有的超链接,遍历绑定点击事件
                var as = document.querySelectorAll('img');
                for (var i = 0; i < as.length; i++) {
                    as[i].onclick = function() {
                        // ul.removeChild(this.parentNode);//小方法一
                        this.parentNode.remove(); //小方法二
                    }
                }
                // 大方法二:每次创建的li的时候里面的img都指定好,对img绑定点击事件,一点就删除自己的父亲
                // var img = li.children[0];
                // img.onclick = function() {
                //     // ul.removeChild(li);//小方法一
                //     this.parentNode.remove(); //小方法二
                // }
            }
        }
    </script>
</body>

</html>

五、总结

逻辑:
1.点击“发布”按钮后,先获取文本域里面的内容。
2.创建一个新的li标签,并将文本域里面的文本赋到新创建的li里面。
3.将整体创建好的li,插入到ul的最下方(也可以放到最上方)。
4.插入进去之后,原先文本域里面填写的内容清空一下。
5.给垃圾桶绑定删除事件,删除垃圾桶所在的这一行元素。
删除的代码有多种实现方式,以上已贴出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值