JS+jQuery简单版发布、删除留言

 

首先用户在输入框中输入内容,按下发布按钮,内容到下面的li中,并且清空输入框中的内容

下面这个li元素就是后面创建的

<!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>Document</title>
    <style>
        textarea {
            resize: none;
            border: 1px solid pink
        }
    </style>
</head>

<body>
    <textarea name="" id="" cols="30" rows="10"></textarea>
    <button>发布</button>
    <ul>

    </ul>
    <script>
        //点击发布按钮,获取文本域中的文本,给下面新创建li中的值
        //获取文本框元素、按钮元素
        var text = document.querySelector('textarea')
        var btn = document.querySelector('button')
        var ul = document.querySelector('ul')


        //当按下按钮后就创建新的li元素,放到ul的后面
        btn.onclick = function() {
            //创建li元素   因为是每按一次按钮,下面就会添加一个li,需要用到循环
            //需要判断,当文本框里面的内容为空时,按下按钮是不会添加的
            if (text.value != '') {
                var li = document.createElement('li')
                ul.appendChild(li)
                    //添加节点
                    //赋值li里面的内容
                li.innerHTML = text.value
                    //按下按钮后,文本框里面的值要清空
                text.value = ''
            }

        }
    </script>
</body>

</html>

分析:

1、点击按钮后,就动态创建一个li,添加到ul里面

2、创建li的同时,把文本域中的值通过li.innerHTML赋给li

3、如果想把新的留言显示到后面就用appendChild,如果显示到前面就用insertBefore

怎么实现放在前面:

并且实现删除留言的案例:

添加li后面对应添加一个删除按钮

1、把文本域的值赋值给li的同时多加一个删除的链接

2、需要把每个链接获取过来,当点击某一个链接的时候,删除当前链接所在的li;也就是当前链接的父亲

3、阻止链接跳转可以添加javascript:void(0),或者javascript:;

<!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>Document</title>
    <style>
        textarea {
            resize: none;
            border: 1px solid pink
        }
        
        li {
            background-color: pink;
            margin-top: 2px;
            width: 630px;
            height: auto;
            line-height: 30px;
        }
        
        p {
            font-size: 15px;
            margin-top: 0px;
            float: left;
        }
        
        button {
            width: 50px;
            height: 30px
        }
        
        li a {
            float: right;
        }
    </style>
</head>

<body>
    <textarea name="" id="" cols="30" rows="10"></textarea>
    <button class="btn">发布</button>
    <ul>

    </ul>
    <script>
        //点击发布按钮,获取文本域中的文本,给下面新创建li中的值
        //获取文本框元素、按钮元素
        var text = document.querySelector('textarea')
        var btn = document.querySelector('.btn')
        var ul = document.querySelector('ul')
        console.log()

        //当按下按钮后就创建新的li元素,放到ul的后面
        btn.onclick = function() {
            //创建li元素   因为是每按一次按钮,下面就会添加一个li,需要用到循环
            //需要判断,当文本框里面的内容为空时,按下按钮是不会添加的
            if (text.value != '') {
                var li = document.createElement('li')
                    //li里面创建一个p放内容
                    // var p = document.createElement('p')
                    // var dele = document.createElement('button')
                    // ul.appendChild(li)
                ul.insertBefore(li, ul.children[0])
                    //在li里面添加p
                    // console.log(ul.children[0])
                    // ul.children[0].appendChild(p)
                    //在li里面添加删除按钮
                    // ul.children[0].appendChild(dele)

                //添加节点
                //赋值li里面的内容
                li.innerHTML = text.value + "<a href='javascript:;'>删除</a>"
                    // dele.innerHTML = '删除'
                    // dele.style.float = 'right'
                    //按下按钮后,文本框里面的值要清空
                text.value = ''
                    //删除元素,删除的是li,当前a链接的父亲
                var as = document.querySelectorAll('a')
                for (var i = 0; i < as.length; i++) {
                    as[i].onclick = function() {
                        //node.removeChild(child)
                        //  this.parentNode    li       父亲为ul
                        ul.removeChild(this.parentNode)
                    }
                } //这个循环操作为什么放在按钮点击事件外面就不会起作用

            }

        }
    </script>
</body>

</html>

jQuery发布微博案例:

1、点击发布按钮,动态创建一个li,放入文本框中的内容和删除按钮,并且添加到ul中

2、点击删除按钮,可以删除当前的微博留言

可以不分span和a

 

 

<!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>Document</title>
    <style>
        .box {
            width: 600px;
            height: auto;
            border: 1px solid black
        }
        
        ul {
            margin-left: 80px;
            width: 300px;
            padding: 0px
        }
        
        li {
            list-style: none;
            width: 270px;
            height: 20px;
            display: inline-block;
            border-bottom: 1px dashed black;
            padding: 0px;
            position: relative;
            display: none;
        }
        
        li span {
            margin: 0px;
            position: absolute;
            left: 0px;
        }
        
        a {
            position: absolute;
            right: 0px
        }
    </style>
    <script src="jquery.min.js"></script>
</head>

<body>
    <div class="box">
        <span>微博发布</span>
        <textarea name="" id="" cols="30" rows="10"></textarea>
        <input type="button" value="发布">
        <ul>

        </ul>
    </div>
    <script>
        //给发布按钮添加点击事件,首先判断text里面有没有内容,有的化点击之后就添加一个li,里面的内容就是textarea里面的内容
        $(function() {

            $('input').on({
                    click: function() {
                        //在ul里面添加li和a/应该是ul里面添加li,li里面包含一个span和a
                        //创建元素
                        if ($('textarea').val() != '') {
                            var index = 0
                            var li = $('<li></li>')
                            var span = $('<span></span>')
                            var a = $('<a href="javascript:;">删除</a>')
                            $('ul').prepend(li)
                            $('ul li').eq(index).append(span)
                            $('ul li').eq(index).append(a)
                                //li的内容为text的内容,值改变当前的li
                            $('ul li').eq(index).children('span').text($('textarea').val())
                            $('ul li').eq(index).slideDown()
                                //此时再情况textarea里面的文本
                            $('textarea').val('')
                        } else {
                            alert('请输入内容')
                        }
                        //添加删除操作,应该用on,此时才可以给动态生成的元素添加事件
                        $('a').on({
                            click: function() {
                                console.log($(this).parent());
                                $(this).parent().slideUp(function() {
                                        $(this).remove() //$(this).parent()此时相当于$(this).parent()的父亲就是ul了,注意
                                    }) //虽然上拉下去了,但这个li还是存在的,因此后面还需要删除
                                    //一定要给a添加禁止刷新页面的href不然就会出错
                            }
                        })

                    }
                })
                //改变未知
        })
    </script>
</body>

</html>

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一夕ξ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值