0

0

JavaScript DOM操作:向列表项动态添加用户输入和删除按钮

DDD

DDD

发布时间:2025-10-13 11:55:01

|

969人浏览过

|

来源于php中文网

原创

JavaScript DOM操作:向列表项动态添加用户输入和删除按钮

本文将详细介绍如何使用javascript进行dom操作,实现在网页中动态创建列表项(`

  • `),并同时将用户输入文本和关联的“删除”按钮添加到同一个列表项中。我们将通过代码示例,演示如何正确地创建、设置和嵌套这些html元素,从而构建一个功能完善的动态列表,并解决常见的元素追加遗漏问题。

    引言:动态列表的需求

    在现代Web应用开发中,动态生成和管理内容是常见的需求。例如,一个待办事项列表、事件规划器或评论区,都需要用户能够输入信息,并将其显示在一个列表中,同时通常会提供一个操作按钮(如“删除”或“编辑”)来管理该列表项。实现这一功能的核心在于JavaScript对文档对象模型(DOM)的精确操作。

    核心概念:DOM元素创建与追加

    要动态地向网页添加内容,我们需要掌握以下几个关键的DOM操作方法:

    1. document.createElement(tagName):用于创建一个指定标签名的HTML元素节点。例如,document.createElement('li')会创建一个
    2. 元素。
    3. document.createTextNode(text):用于创建一个包含指定文本内容的文本节点。这比直接设置innerHTML更安全,尤其是在处理用户输入时,可以避免潜在的XSS攻击。
    4. element.appendChild(childElement):将一个子节点追加到指定父节点的末尾。这是构建元素层级结构的关键方法。理解父子关系至关重要,一个元素必须先被创建,然后才能被追加到其父元素中。

    问题解析:元素追加的常见遗漏

    在实现动态列表项时,开发者常犯的一个错误是只将用户输入的文本追加到新创建的

  • 元素中,而忘记将伴随的操作按钮也追加进去。这会导致按钮无法显示在正确的列表项内部。正确的做法是,所有希望出现在同一个
  • 内部的子元素(无论是文本节点还是其他HTML元素),都必须通过appendChild()方法逐一追加到该
  • 元素上。

    实现步骤与代码示例

    下面我们将通过一个完整的待办事项列表示例,演示如何正确地将用户输入和删除按钮添加到同一个

  • 元素中。

    立即学习Java免费学习笔记(深入)”;

    ClippingMagic
    ClippingMagic

    魔术般地去除图片背景

    下载

    1. HTML结构

    首先,我们需要一个基本的HTML骨架,包括一个输入框、一个提交按钮和一个用于显示待办事项的有序列表(

      )容器。
      
      
      
          
          
          动态待办事项列表
          
      
      
          

      我的待办事项

        2. JavaScript逻辑

        接下来,我们将编写JavaScript代码来处理表单提交,动态创建列表项,并将其添加到页面中。

        // script.js
        document.addEventListener('DOMContentLoaded', () => {
            // 获取DOM元素引用
            const todoInput = document.getElementById('todoInput');
            const todoForm = document.getElementById('todoForm');
            const todoListContainer = document.getElementById('todoList');
        
            // 监听表单的提交事件
            todoForm.addEventListener('submit', (e) => {
                e.preventDefault(); // 阻止表单的默认提交行为(页面刷新)
        
                // 获取并清理用户输入
                const itemText = todoInput.value.trim(); 
        
                // 检查输入是否为空
                if (itemText === '') {
                    alert('待办事项不能为空,请输入内容!');
                    return; // 如果为空,则不执行后续操作
                }
        
                // 1. 创建新的列表项 
      1. 元素 const newItem = document.createElement('li'); // 2. 创建一个元素来包裹文本,方便样式控制 const textSpan = document.createElement('span'); textSpan.textContent = itemText; // 使用 textContent 设置文本内容,更安全 // 3. 创建删除按钮
      2. 注意事项与最佳实践

      • 阻止默认行为:e.preventDefault() 是处理表单提交时非常重要的一步,它能阻止浏览器执行默认的表单提交行为(通常是页面刷新)。
      • 清理用户输入:trim() 方法可以移除字符串两端的空白字符,确保即使输入了空格也不会创建空列表项。
      • 使用 textContent:当设置元素的纯文本内容时,优先使用 element.textContent 而不是 element.innerHTML。textContent 会自动对特殊字符进行编码,从而防止跨站脚本(XSS)攻击。
      • 错误处理:对用户输入进行验证(例如,检查是否为空),并提供相应的反馈,可以提升用户体验。
      • 事件委托(高级):对于大量动态生成的元素,为每个元素添加事件监听器可能会影响性能。更高效的做法是使用事件委托,即在父元素上添加一个事件监听器,然后根据事件的目标(e.target)来判断是哪个子元素触发了事件。
      • 代码可读性:为变量和函数选择有意义的名称,并添加注释,可以大大提高代码的可读性和可维护性。

      总结

      通过本文的详细教程,您应该已经掌握了如何使用JavaScript进行DOM操作,以动态地创建包含用户输入文本和操作按钮的列表项。关键在于理解document.createElement()、document.createTextNode()(或textContent)以及element.appendChild()的用法,并确保所有期望在同一父元素内部的子元素都被正确地追加。遵循这些原则,您将能够构建出功能强大且用户友好的动态Web界面。

    1. 相关专题

      更多
      js获取数组长度的方法
      js获取数组长度的方法

      在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

      552

      2023.06.20

      js刷新当前页面
      js刷新当前页面

      js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

      374

      2023.07.04

      js四舍五入
      js四舍五入

      js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

      730

      2023.07.04

      js删除节点的方法
      js删除节点的方法

      js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

      475

      2023.09.01

      JavaScript转义字符
      JavaScript转义字符

      JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

      394

      2023.09.04

      js生成随机数的方法
      js生成随机数的方法

      js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

      990

      2023.09.04

      如何启用JavaScript
      如何启用JavaScript

      JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

      656

      2023.09.12

      Js中Symbol类详解
      Js中Symbol类详解

      javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

      551

      2023.09.20

      Java 项目构建与依赖管理(Maven / Gradle)
      Java 项目构建与依赖管理(Maven / Gradle)

      本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

      3

      2026.01.12

      热门下载

      更多
      网站特效
      /
      网站源码
      /
      网站素材
      /
      前端模板

      精品课程

      更多
      相关推荐
      /
      热门推荐
      /
      最新课程
      React 教程
      React 教程

      共58课时 | 3.5万人学习

      TypeScript 教程
      TypeScript 教程

      共19课时 | 2.1万人学习

      Bootstrap 5教程
      Bootstrap 5教程

      共46课时 | 2.8万人学习

      关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
      php中文网:公益在线php培训,帮助PHP学习者快速成长!
      关注服务号 技术交流群
      PHP中文网订阅号
      每天精选资源文章推送

      Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号