0

0

使用纯JavaScript实现动态表格行的增删改查(CRUD)功能

DDD

DDD

发布时间:2025-09-24 13:10:13

|

182人浏览过

|

来源于php中文网

原创

使用纯javascript实现动态表格行的增删改查(crud)功能

本教程详细介绍了如何使用纯JavaScript在网页中实现对动态生成表格行的添加、编辑和删除(CRUD)功能。我们将重点讲解编辑功能的实现原理,包括如何将表格单元格内容转换为可编辑的输入框,并在保存时更新数据,提供完整的代码示例和注意事项,帮助开发者纯前端实现数据管理。

1. 引言:动态表格操作的必要性

在现代Web应用中,动态地展示和管理数据是常见的需求。用户可能需要实时地添加新数据、修改现有记录或删除不再需要的信息,而这一切都可以在不刷新页面的情况下通过前端JavaScript实现。本教程将引导您使用纯JavaScript构建一个具备完整增删改查(CRUD)功能的动态表格。

2. 初始HTML结构与表格生成

首先,我们需要一个基本的HTML表格结构来承载数据。在这个示例中,我们将使用JavaScript动态地创建表格及其初始行。这种方法虽然在大型应用中可能不是最佳实践(通常会直接在HTML中定义骨架或使用模板引擎),但对于演示纯JavaScript操作DOM非常有效。




    动态表格CRUD
    


    

在上述HTML结构中,我们:

  • 创建了一个ID为 TABLE 的表格。
  • 定义了表头。
  • 添加了一个示例数据行 (row1),其中包含编辑、保存和删除按钮。注意 onclick 事件中传递的参数 \"1\",这是因为JavaScript字符串中需要对引号进行转义。
  • 添加了一个特殊行 (new_row_input),用于输入新数据并触发 addrow 函数。

3. 核心JavaScript功能实现

接下来,我们将逐步实现添加、编辑、保存和删除行的JavaScript函数。

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

3.1 添加行 (addrow)

addrow 函数负责从输入框中获取数据,然后动态地创建并插入一个新的表格行。

        function addrow(){
            var new_id_val = document.getElementById("new_id").value;
            var new_name_val = document.getElementById("new_name").value;
            var new_address_val = document.getElementById("new_address").value;
            var new_age_val = document.getElementById("new_age").value;

            var mytable = document.getElementById("TABLE");
            // 获取当前表格的行数,用于生成新行的唯一ID
            var t_length = mytable.rows.length - 1; // 减去用于添加新行的输入行
            var newRowId = "row" + t_length;

            // 创建新行的HTML字符串
            var newRowHTML = "" +
                                 "" + new_id_val + "" +
                                 "" + new_name_val + "" +
                                 "" + new_address_val + "" +
                                 "" + new_age_val + "" +
                                 "" +
                                     " " +
                                     " " +
                                     "" +
                                 "" +
                             "";

            // 在“添加新行”的输入行之前插入新行
            var newRow = mytable.insertRow(t_length);
            newRow.outerHTML = newRowHTML;

            // 清空输入框
            document.getElementById("new_id").value = "";
            document.getElementById("new_name").value = "";
            document.getElementById("new_address").value = "";
            document.getElementById("new_age").value = "";
        }

说明:

  • 我们通过 document.getElementById().value 获取用户在输入框中填写的数据。
  • mytable.rows.length - 1 用于确定新行插入的位置(在输入行之前)和生成新行的唯一ID。
  • outerHTML 属性被用来设置新行的完整HTML内容,包括其单元格和操作按钮。每个新行的ID和其内部元素的ID都包含了 t_length 以确保唯一性。
  • 添加完成后,清空输入框,方便用户继续添加。

3.2 删除行 (deleterow)

deleterow 函数通过事件触发的元素向上查找其父级

LongShot
LongShot

LongShot 是一款 AI 写作助手,可帮助您生成针对搜索引擎优化的内容博客。

下载
元素并将其从DOM中移除。
        function deleterow(buttonElement) {
            // 获取按钮所在的 td 元素
            var td = buttonElement.parentNode; 
            // 获取 td 所在的 tr 元素
            var tr = td.parentNode;
            // 从 tr 的父元素(tbody 或 table)中移除 tr
            tr.parentNode.removeChild(tr);
        }

说明:

  • 我们将 this 作为参数传递给 deleterow 函数,this 指代被点击的按钮元素。
  • 通过 parentNode 属性,我们可以逐级向上找到按钮所在的 元素,再找到 所在的 元素。
  • 最后,使用 tr.parentNode.removeChild(tr) 将该行从表格中移除。
  • 3.3 编辑行 (editrow)

    editrow 函数是整个CRUD功能的核心和难点。它的主要任务是将表格单元格的文本内容替换为可编辑的 元素,并切换按钮的可见状态。

            function editrow(x){
                // 切换按钮显示状态:隐藏编辑按钮,显示保存按钮
                document.getElementById("edit_button" + x).style.display = "none";
                document.getElementById("save_button" + x).style.display = "block";
    
                // 获取当前行各个单元格的DOM元素
                var idCell = document.getElementById("id_row" + x);
                var nameCell = document.getElementById("name_row" + x);
                var addressCell = document.getElementById("address_row" + x);
                var ageCell = document.getElementById("age_row" + x);
    
                // 获取单元格的当前文本内容
                var id_data = idCell.innerHTML;
                var name_data = nameCell.innerHTML;
                var address_data = addressCell.innerHTML;
                var age_data = ageCell.innerHTML;
    
                // 构建新的输入框HTML字符串,并预填充当前内容
                var id_input = "";
                var name_input = "";
                var address_input = "";
                var age_input = ""; 
    
                // 关键步骤:将单元格的 innerHTML 替换为输入框
                idCell.innerHTML = id_input;
                nameCell.innerHTML = name_input;
                addressCell.innerHTML = address_input;
                ageCell.innerHTML = age_input;
            } 

    说明:

    • 函数接收一个参数 x,它代表当前行的唯一标识符(例如 1, 2, 3...)。
    • 首先,它通过修改 display 样式来隐藏“编辑”按钮并显示“保存”按钮。
    • 接着,它获取当前行中所有数据单元格(ID、Name、Address、Age)的DOM元素。
    • 获取每个单元格当前的 innerHTML(即显示的数据)。
    • 核心修改: 使用获取到的数据,动态构建 元素的HTML字符串。这些输入框的ID也包含 x,例如 id_text1,以便在保存时能够准确获取其值。value 属性被设置为单元格的原始数据,实现预填充。
    • 最关键的步骤是: 将每个单元格的 innerHTML 属性设置为新构建的输入框HTML字符串。这样,原有的文本内容就会被输入框替代,用户可以开始编辑。

    3.4 保存行 (saverow)

    saverow 函数在用户点击“保存”按钮后触发。它会从编辑模式下的输入框中获取新值,然后将单元格内容恢复为纯文本,并再次切换按钮状态。

            function saverow(y){
                // 获取输入框中的新值
                var id_val = document.getElementById("id_text" + y).value;
                var name_val = document.getElementById("name_text" + y).value;
                var address_val = document.getElementById("address_text" + y).value;
                var age_val = document.getElementById("age_text" + y).value;
    
                // 将单元格的 innerHTML 替换为新的文本值
                document.getElementById("id_row" + y).innerHTML = id_val;
                document.getElementById("name_row" + y).innerHTML = name_val;
                document.getElementById("address_row" + y).innerHTML = address_val;
                document.getElementById("age_row" + y).innerHTML = age_val;
    
                // 切换按钮显示状态:显示编辑按钮,隐藏保存按钮
                document.getElementById("edit_button" + y).style.display = "block";
                document.getElementById("save_button" + y).style.display = "none";
            }

    说明:

    • 函数接收一个参数 y,代表当前行的唯一标识符。
    • 通过 document.getElementById().value 获取对应输入框中的新值。
    • 将每个数据单元格的 innerHTML 属性设置为这些新值,从而将输入框替换为更新后的文本。
    • 最后,再次切换按钮的显示状态,使“编辑”按钮可见,“保存”按钮隐藏。

    4. 完整代码示例

    将上述所有JavaScript函数整合到

    标签内的

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

183

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

287

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

258

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

125

2025.08.07

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1502

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

624

2023.11.24

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

1

2026.01.29

热门下载

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

精品课程

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

共58课时 | 4.3万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

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

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