JavaScript实现简易留言板:动态添加与删除功能

作者:窗边听雨时间:2026-10-30 21:31:58浏览:301

本文介绍如何使用JavaScript、HTML和CSS制作一个简易留言板。核心功能包括:在文本框输入文字后点击提交,动态创建li元素并添加至列表顶部,同时显示当前时间;支持点击删除按钮移除对应留言。文章详细解析了节点创建、事件绑定及DOM增删的具体实现步骤与完整代码。

案例说明

本示例旨在通过JavaScript、CSS以及HTML技术,构建一个功能简单的留言板应用。

具体交互逻辑为:用户在页面的文本输入框中输入文字,点击“提交”按钮后,输入的文字与当前留言时间将显示在下方列表中。若再次输入新文字并提交,新内容将显示在列表的最上方。此外,每条留言后设有删除按钮,点击即可移除已提交的留言。

【案例分析】本功能主要依赖DOM节点的创建、添加和删除操作来实现。在页面交互中,点击“提交”按钮会动态生成一个li元素,并将其插入到ul列表容器中。

HTML结构部分

页面主要包含三个核心部分:一个用于输入的文本框、一个用于触发动作的提交按钮,以及一个用于展示留言内容的ul列表容器。

<div id="mgs">
        <textarea id="text"></textarea><br>
        <input type="button" id="btn" value="提交">
        <ul class="list"></ul>
    </div>

CSS样式部分

    * {
        margin: 0;
        padding: 0;
    }
    #mgs {
        width: 400px;
        color: black;
        font-style: italic;
        border-width: 5px;
        margin: 0 auto;
    }
    #text {
        width: 400px;
        height: 150px;
        padding: 20px;
        font-size: 20px;
    }
    li {
        list-style: none;
        border-bottom: 1px solid #999;
        line-height: 20px;
        margin-top: 30px;
    }
    span {
        float: right;
    }

CSS部分主要进行默认样式的清除,并设置文本框的样式(字体颜色为黑色,字体风格为斜体,在浏览器视口中水平居中,设定字体大小及内边距)。同时,去除列表的默认样式,其中span标签主要用于包裹显示当前留言的时间信息。

JavaScript代码逻辑

首先,需要获取提交按钮元素、展示留言的ul列表元素以及文本输入框元素。

            var btn = document.getElementById('btn');
            var list = document.querySelector('.list');
            var text = document.getElementById('text');

接下来,为按钮绑定点击事件监听器。

在事件处理函数中,首先判断文本框是否为空。如果用户未输入任何内容就点击提交,浏览器将弹出提示框显示“你没有输入内容”。

  btn.onclick = function () {
                if (text.value == '') {
                    alert('你没有输入内容。')
                } else {

若文本框中有内容,则执行以下操作:创建一个li元素节点,将该li元素的innerHTML设置为文本框内的内容、当前时间以及一个删除按钮的组合字符串。随后,将该li元素添加到ul列表中,并清空文本框内的已输入内容。

 var li = document.createElement('li');
 li.innerHTML = text.value + '<span>' + mytime + '\t' + '<button>删除</button></span>'
 text.value = '';
 list.insertBefore(li, list.children[0]);

获取当前输入内容的时间戳,格式化为年月日字符串。

var time = new Date();
var mytime = time.getFullYear() + '-' + (time.getMonth() + 1) + '-' + time.getDate();
li.innerHTML = text.value + '<span>' + mytime + '\t' + '<button>删除</button></span>';

最后,为生成的删除按钮绑定点击删除事件。通过querySelectorAll获取页面中所有的button按钮,遍历每个按钮并绑定点击事件。当点击某个button时,通过this.parentNode.parentNode获取其对应的li元素节点,并从列表中移除该节点。

   var allB = document.querySelectorAll('button');
                    for (var i = 0; i < allB.length; i++) {
                        allB[i].onclick = function () {
                            list.removeChild(this.parentNode.parentNode);
                        }

全部代码

<!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>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
    }
    #mgs {
        width: 400px;
        color: black;
        font-style: italic;
        border-width: 5px;
        margin: 0 auto;
    }
    #text {
        width: 400px;
        height: 150px;
        padding: 20px;
        font-size: 20px;
    }
    li {
        list-style: none;
        border-bottom: 1px solid #999;
        line-height: 20px;
        margin-top: 30px;
    }
    span {
        float: right;
    }
</style>
<body>
    <div id="mgs">
        <textarea id="text"></textarea><br>
        <input type="button" id="btn" value="提交">
        <ul class="list"></ul>
    </div>
        <script>
            var btn = document.getElementById('btn');
            var list = document.querySelector('.list');
            var text = document.getElementById('text');
            btn.onclick = function () {
                if (text.value == '') {
                    alert('你没有输入内容。')
                } else {
                    var li = document.createElement('li');
                     var time = new Date();
                    var mytime = time.getFullYear() + '-' + (time.getMonth() + 1) + '-' + time.getDate();
                    li.innerHTML = text.value + '<span>' + mytime + '\t' + '<button>删除</button></span>';
                    text.value = '';
                    list.insertBefore(li, list.children[0]);
                    var allB = document.querySelectorAll('button');
                    for (var i = 0; i < allB.length; i++) {
                        allB[i].onclick = function () {
                            list.removeChild(this.parentNode.parentNode);
                        }
                    }
                }
            }
        </script>
</body>
</html>

效果图展示

未输入任何内容时点击提交的界面状态。

案例说明

输入有效内容并点击提交按钮后的界面状态。

案例说明

案例说明

点击留言后的删除按钮时的界面状态。

案例说明

总结

至此,关于使用JavaScript实现简易留言板的功能介绍完毕。如需了解更多JS实现留言板的相关内容,可搜索本站过往文章或继续浏览后续系列文章,感谢大家的支持!

作者最新文章