怎么使用JS实现简单留言板功能

技术介绍

JavaScript(简称JS)是一种具有强大功能的编程语言,广泛应用于网页开发,在本文中,我们将使用JavaScript实现一个简单的留言板功能,留言板可以分为以下几个部分:

1、用户输入:用户可以在文本框中输入留言内容。

怎么使用JS实现简单留言板功能

2、留言显示:将用户输入的留言内容显示在页面上。

3、删除留言:用户可以选择删除某条留言。

4、提交留言:用户点击提交按钮后,留言将被保存到服务器。

实现步骤

1、创建HTML页面结构

怎么使用JS实现简单留言板功能

我们需要创建一个HTML页面,包含一个表单用于用户输入留言内容,一个列表用于显示留言,以及一些辅助元素如提交按钮和删除按钮。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>简单留言板</title>
</head>
<body>
    <form id="messageForm">
        <textarea id="messageInput" rows="5" cols="30"></textarea><br>
        <button type="submit">提交留言</button>
    </form>
    <ul id="messageList"></ul>
    <script src="main.js"></script>
</body>
</html>

2、编写JavaScript代码

接下来,我们需要编写JavaScript代码来实现留言板的功能,我们需要获取HTML页面中的元素,然后为这些元素添加事件监听器,当用户输入留言并点击提交按钮时,我们将调用一个名为addMessage的函数;当用户点击删除按钮或选择某条留言时,我们将调用一个名为deleteMessage的函数,我们还需要编写一个名为saveMessages的函数,用于将留言保存到服务器,这里我们假设已经有一个名为serverSaveMessages的函数可以实现这个功能。

// main.js
document.getElementById('messageForm').addEventListener('submit', function (event) {
    event.preventDefault(); // 阻止表单默认提交行为
    addMessage(); // 添加留言
});
document.getElementById('messageList').addEventListener('click', function (event) {
    if (event.target.className === 'deleteButton') { // 如果点击的是删除按钮
        deleteMessage(event.target); // 删除该条留言
    } else if (event.target.className === 'commentItem') { // 如果点击的是某条留言的删除按钮或复选框(表示已读/未读状态)
        const comment = event.target.closest('li'); // 获取该条留言所在的li元素
        const messageId = parseInt(comment.dataset.id); // 从data-id属性中获取留言ID
        deleteMessage(messageId); // 删除该条留言
    }
});

3、实现addMessagedeleteMessagesaveMessages函数

怎么使用JS实现简单留言板功能

下面是这三个函数的具体实现:

function addMessage() {
    const messageInput = document.getElementById('messageInput'); // 获取输入框元素
    const messageText = messageInput.value.trim(); // 获取输入的留言内容并去除首尾空格
    if (!messageText) return; // 如果留言内容为空,则直接返回
    const commentItem = document.createElement('li'); // 创建一个新的li元素作为留言项容器
    commentItem.dataset.id = Date.now().toString(); // 为该元素设置一个唯一的data-id属性值(这里使用当前时间戳作为示例)
    commentItem.innerHTML = <strong class="userInfo">${messageText}</strong><span class="deleteButton" data-id="${commentItem.dataset.id}"></span><input type="checkbox" class="readStatus" />; // 将留言内容和删除按钮、复选框添加到li元素中(这里使用了简化的DOM操作方式)
    Array.from(document.querySelectorAll('messageList li')).forEach((item) => item.classList.remove('selected')); // 确保只有最新的一条留言处于选中状态(这里使用了简化的DOM操作方式)
    commentItem.classList.add('selected'); // 将最新一条留言设为选中状态(这里使用了简化的DOM操作方式)
    Array.from(commentItem.getElementsByTagName('span'))[0].addEventListener('click', function (event) { // 为删除按钮添加点击事件监听器(这里使用了简化的DOM操作方式)
        event.stopPropagation(); // 防止冒泡触发其他元素的点击事件监听器(这里使用了简化的DOM操作方式)
        deleteMessage($(this).closest('li').data('id')); // 根据data-id属性值删除该条留言(这里使用了jQuery库简化DOM操作)
        $(this).closest('li').remove(); // 从DOM中移除该条留言(这里使用了jQuery库简化DOM操作)
        saveMessages(); // 将更新后的留言列表保存到服务器(这里假设已经实现了这个功能)
    });
    Array.from(commentItem.getElementsByTagName('input'))[0].addEventListener('change', function (event) { // 为复选框添加点击事件监听器(这里使用了简化的DOM操作方式)
        const isChecked = event.target.checked; // 判断复选框是否被选中(这里使用了简化的DOM操作方式)
        $(commentItem).toggleClass('read', isChecked); // 根据复选框的状态为该条留言添加或移除“已读”类名(这里使用了jQuery库简化DOM操作)
        saveMessages(); // 将更新后的留言列表保存到服务器(这里假设已经实现了这个功能)
    });
    Array.from(commentItem.getElementsByTagName('strong'))[0].addEventListener('click', function (event) { // 为加粗的文字添加点击事件监听器(这里使用了简化的DOM操作方式)
        event.stopPropagation(); // 防止冒泡触发其他元素的点击事件监听器(这里使用了简化的DOM操作方式)
        messageInput.value = ''; // 将输入框清空(这里使用了简化的DOM操作方式)
        $(commentItem).remove(); // 从DOM中移除该条留言(这里使用了jQuery库简化DOM操作)
        saveMessages(); // 将更新后的留言列表保存到服务器(这里假设已经实现了这个功能)
        messageInput.focus(); // 将焦点重新设置到输入框上(这里使用了简化的DOM操作方式)
        messageInput[0].select(); // 将光标移动到输入框的开头位置(这里使用了简化的DOM操作方式)
    }, true); // 注意这里的第三个参数为true,表示事件处理程序在冒泡阶段执行(这里使用了简化的DOM操作方式)
    Array.from(document.getElementById('messageList'))[0].appendChild(commentItem); // 将新的留言项添加到列表中(这里使用了简化的DOM操作方式)
}

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/216509.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-01-12 23:48
Next 2024-01-12 23:53

相关推荐

  • js 怎么输出00:00

    在JavaScript中,有多种方法可以输出HTML,以下是一些常见的方法:1、使用innerHTML属性innerHTML属性是一个字符串,它包含了当前元素及其所有子元素的HTML内容,通过设置innerHTML属性,我们可以动态地修改一个元素的内容。示例代码:// 获取一个元素var element = document.getE……

    2024-03-18
    0172
  • html的js怎么用

    HTML的JS怎么用JavaScript(简称JS)是一种轻量级的编程语言,主要用于网页开发,可以实现网页的动态效果,在HTML中,我们可以通过&lt;script&gt;标签来引入JavaScript代码,本文将详细介绍如何在HTML中使用JavaScript,包括基本语法、事件处理、函数定义和调用等方面的内容。基本……

    2024-01-02
    0103
  • html怎么调用js的方法吗

    在HTML中调用JavaScript的方法主要有以下几种:1、直接在HTML文件中使用&lt;script&gt;标签插入JavaScript代码,这种方法适用于简单的JavaScript代码,可以直接写在HTML文件中。&lt;!DOCTYPE html&gt;&lt;html&gt;……

    2024-04-06
    0178
  • js怎么添加图片代码

    JavaScript 提供了多种方法来动态地添加 HTML 内容到网页中,这些方法可以用于响应用户交互,加载外部数据,或者在页面初次加载后修改页面结构,以下是一些常用的技术介绍:使用 innerHTML 属性最简单直接的方法是使用元素的 innerHTML 属性,这个属性允许你设置或获取元素内部的 HTML 内容。&lt;!D……

    2024-02-03
    0100
  • js如何实现拖拽

    哈喽!相信很多朋友都对js控件的拖拽生成html不太了解吧,所以小编今天就进行详细解释,还有几点拓展内容,希望能给你一定的启发,让我们现在开始吧!...如何通过拖拽将工程中的js文件、css文件引入html,怎么设置???_百度...1、这个用CSS的浮动解决,一个大DIV里三个小DIV,给三个小DIV都设置宽度并且都float:left就好了。

    2023-11-24
    0121
  • js代码格式化输出的方法是什么意思

    js代码格式化输出的方法是指使用JavaScript语言对代码进行格式化,使其更易于阅读和理解。

    2024-01-27
    0171

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入