JavaScript DOM实现简单留言板

yizhihongxing

下面是“JavaScript DOM实现简单留言板”的完整攻略。

一、准备工作

1.1 创建HTML文件

首先,我们要创建一个HTML文件,命名为“index.html”。在这个文件里编写HTML结构,用于显示留言板的相关内容。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>JavaScript DOM实现简单留言板</title>
</head>
<body>
    <h1>JavaScript DOM实现简单留言板</h1>
    <form>
        <label for="username">用户名:</label>
        <input type="text" id="username" name="username"><br>

        <label for="message">留言:</label>
        <textarea id="message" name="message"></textarea><br>

        <button type="button" id="submit">提交留言</button>
    </form>

    <ul id="message-list"></ul>

    <script src="app.js"></script>
</body>
</html>

1.2 创建JavaScript文件

接着,我们要创建一个JavaScript文件,命名为“app.js”。在这个文件里编写JavaScript代码,实现留言板的相关功能。

// 获取元素
const form = document.querySelector('form');
const username = document.querySelector('#username');
const message = document.querySelector('#message');
const messageList = document.querySelector('#message-list');

// 提交留言
form.addEventListener('submit', (event) => {
  event.preventDefault();

  const li = document.createElement('li');
  const strong = document.createElement('strong');
  const span = document.createElement('span');

  strong.textContent = username.value;
  span.textContent = message.value;

  li.appendChild(strong);
  li.appendChild(span);
  messageList.appendChild(li);

  username.value = '';
  message.value = '';
});

二、攻略解析

2.1 获取元素

const form = document.querySelector('form');
const username = document.querySelector('#username');
const message = document.querySelector('#message');
const messageList = document.querySelector('#message-list');

在获取元素时,我们使用了document.querySelector()方法。这个方法接收一个选择器字符串作为参数,并返回满足该选择器的第一个元素。在这个留言板项目中,我们使用了四个不同的选择器:

  1. 'form'选择器:用于获取表单元素;
  2. '#username'选择器:用于获取用户名输入框元素;
  3. '#message'选择器:用于获取留言输入框元素;
  4. '#message-list'选择器:用于获取留言列表元素。

2.2 提交留言

form.addEventListener('submit', (event) => {
  event.preventDefault();

  const li = document.createElement('li');
  const strong = document.createElement('strong');
  const span = document.createElement('span');

  strong.textContent = username.value;
  span.textContent = message.value;

  li.appendChild(strong);
  li.appendChild(span);
  messageList.appendChild(li);

  username.value = '';
  message.value = '';
});

在提交留言时,我们使用了form.addEventListener()方法。这个方法接收两个参数:事件名称和事件处理函数。

在事件处理函数中,我们使用了以下几个方法:

  1. event.preventDefault()方法:阻止表单的默认提交行为;
  2. document.createElement()方法:创建新的HTML元素;
  3. textContent属性:用于设置元素的文本内容;
  4. appendChild()方法:将某个元素追加到另一个元素的子节点列表的末尾;
  5. 值为''的属性:通过将某个属性的值设置为空字符串来清空表单输入框。

在这个过程中,我们首先创建了一个新的<li>元素,并创建了两个子元素<strong><span>,分别用于显示用户名和留言内容。然后将这两个子元素都添加到<li>元素中,并将<li>元素添加到留言列表中。最后,清空了表单输入框的值,以达到重置表单的目的。

2.3 示例说明

下面,我们给两个示例,来演示如何添加更多的功能。

示例1:限制留言字数

我们可以在代码中添加一个函数来限制留言的字数。比如,我们可以设置留言的最大字数为50。如果用户输入的留言字数超过了50个字符,我们就给出一个警告提示。代码修改如下:

// 获取元素
const form = document.querySelector('form');
const username = document.querySelector('#username');
const message = document.querySelector('#message');
const messageList = document.querySelector('#message-list');

// 提交留言
form.addEventListener('submit', (event) => {
  event.preventDefault();

  // 限制留言字数
  if (message.value.length > 50) {
    alert('留言字数不能超过50个字符!');
    return;
  }

  const li = document.createElement('li');
  const strong = document.createElement('strong');
  const span = document.createElement('span');

  strong.textContent = username.value;
  span.textContent = message.value;

  li.appendChild(strong);
  li.appendChild(span);
  messageList.appendChild(li);

  username.value = '';
  message.value = '';
});

在这个代码中,我们添加了一个判断语句,用于限制留言字数。如果留言字数超出了50个字符,就弹出一个警告提示。

示例2:删除留言

我们也可以添加一个功能,允许用户删除自己的留言。具体实现方法是,在每个留言的后面添加一个“删除”按钮,当用户点击这个按钮时,就从留言列表中删除该留言。代码修改如下:

// 获取元素
const form = document.querySelector('form');
const username = document.querySelector('#username');
const message = document.querySelector('#message');
const messageList = document.querySelector('#message-list');

// 提交留言
form.addEventListener('submit', (event) => {
  event.preventDefault();

  const li = document.createElement('li');
  const strong = document.createElement('strong');
  const span = document.createElement('span');
  const button = document.createElement('button');

  strong.textContent = username.value;
  span.textContent = message.value;
  button.textContent = '删除';

  li.appendChild(strong);
  li.appendChild(span);
  li.appendChild(button);
  messageList.appendChild(li);

  button.addEventListener('click', () => {
    messageList.removeChild(li);
  });

  username.value = '';
  message.value = '';
});

在这个代码中,我们添加了一个新的<button>元素,用于删除留言。当用户点击这个按钮时,我们就可以从留言列表中删除该留言。为了实现这个功能,我们在添加留言时,给每个留言都添加了一个“删除”按钮,并为这个按钮添加了一个click事件处理函数。在这个事件处理函数中,我们使用messageList.removeChild()方法,将当前的留言元素从留言列表中删除。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript DOM实现简单留言板 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Spring Security使用中Preflight请求和跨域问题详解

    Spring Security使用中Preflight请求和跨域问题详解 什么是Preflight请求 Preflight请求也被称为CORS预检请求,是跨域请求中的一种。在进行跨域请求时,客户端会自动发送Preflight请求到服务器来检查是否可以跨域请求。具体来说,Preflight请求是一个附带预检请求头信息的OPTIONS请求,用于检查实际请求是否可…

    Java 2023年5月20日
    00
  • Log4j不同模块输出到不同的文件中

    要实现Log4j不同模块输出到不同的文件中,需要使用配置文件。下面是实现此功能的步骤: 创建Log4j配置文件 在项目中,创建一个名为log4j.properties或log4j.xml的配置文件,并将其放在类路径下(src/main/resources目录下)。这个配置文件需要定义多个输出端,每个输出端和对应的日志级别,以及如何输出。一个简单的log4j配…

    Java 2023年5月19日
    00
  • Java-Java5.0注解全面解读

    Java-Java5.0注解全面解读攻略 什么是注解? 在Java中,注解是一种用于为程序代码提供元数据的标记,它们可以被添加到类、方法、字段和其他程序元素中。 注解本身并没有直接影响代码的执行过程,但是它们可以在运行时被获取并处理,从而影响程序的行为和结构。 使用注解的一个重要的好处是:它可以使得代码更加易于阅读和理解,尤其是在有大量重复代码的情况下。 注…

    Java 2023年5月26日
    00
  • spring mvc中@RequestBody注解的作用说明

    在 Spring MVC 中,@RequestBody 注解用于将 HTTP 请求体映射到一个对象上。本文将详细讲解 @RequestBody 注解的作用说明,并提供两个示例说明。 1. @RequestBody 注解的作用说明 @RequestBody 注解用于将 HTTP 请求体映射到一个对象上。当我们使用 @RequestBody 注解时,Spring…

    Java 2023年5月18日
    00
  • Java的Struts框架报错“ForwardProcessorException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“NoSuchRequestHandlingMethodException”错误。这个错误通常由以下原因之一起: 找不到请求处理方法:如果在Action类中找不到与请求匹配的处理方法,则可能会出现此错误。在这种情况下,需要检查Action类以解决此问题。 请求路径错误:如果请求路径不正确,则可能会出现此错误。在这…

    Java 2023年5月5日
    00
  • Java多线程之synchronized同步代码块详解

    Java多线程之synchronized同步代码块详解 什么是synchronized同步代码块? synchronized 是 Java 中的一个关键字,用来实现多线程的同步。synchronized 有两个作用:一是保证代码块只能由一个线程执行,二是保证该线程执行该代码块期间所需的所有资源都已获取。 具体地说,我们可以使用synchronized关键字来…

    Java 2023年5月18日
    00
  • java表单提交中文乱码的解决方法

    针对Java表单提交中文乱码的解决方法,我们可以从服务器和浏览器两个方面入手,以下是完整的攻略: 一、服务器端解决方案 1.1 设置请求编码与响应编码 在服务器端,我们可以通过设置请求编码和响应编码来解决Java表单提交中文乱码问题。 request.setCharacterEncoding("UTF-8"); response.setC…

    Java 2023年5月20日
    00
  • java 获取日期的几天前,几个月前和几年前的实例

    获取日期的几天前、几个月前和几年前可以使用Java中的Calendar类来实现。具体步骤如下: 1.通过Calendar.getInstance()方法获取当前时间的Calendar实例。 2.使用Calendar类的add方法修改时间,其中第一个参数是修改时间的字段(例如,Calendar.DAY_OF_YEAR表示修改年中的天数),第二个参数是修改的值,…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部