要在Javascript中实现表格新增行功能,且添加元素,增删操作

news2024/11/19 3:30:23

起始表格元素:

 <!-- table>(thead>tr>th*6)+(tbody>tr>td*6) -->
    <div class="container">
        <table id="myTable">
            <caption>
                <h3>员工信息管理系统</h3>
            </caption>
            <thead>
                <tr>
                    <th>全选 <input type="checkbox" id="allSelectCheckbox"></th>
                    <th>姓名</th>
                    <th>年龄</th>
                    <th>性别</th>
                    <th>电话</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody id="tbodyId">
                <tr>
                    <td><input type="checkbox"></td>
                    <td>aa</td>
                    <td>19</td>
                    <td>male</td>
                    <td>110</td>
                    <td><input type="button" value="删除" onclick="delRow(this)"></td>
                </tr>
                <tr>
                    <td><input type="checkbox"></td>
                    <td>bb</td>
                    <td>20</td>
                    <td>male</td>
                    <td>110</td>
                    <td><input type="button" value="删除" onclick="delRow(this)"></td>
                </tr>
                <tr>
                    <td><input type="checkbox"></td>
                    <td>cc</td>
                    <td>19</td>
                    <td>female</td>
                    <td>119</td>
                    <td><input type="button" value="删除" onclick="delRow(this)"></td>
                </tr>
            </tbody>
            <tfoot id="tfootId">
                <tr>
                    <td><input type="button" value="多选删除" onclick="delAll()"></td>
                    <td colspan="2" class="btn-right" onclick="delFirst()"><button>删除第一个</button></td>
                    <td colspan="2" onclick="delLast()"><button >删除最后一个</button></td>
                    <td></td>
                </tr>
            </tfoot>
        </table>
        <hr>
        <form>
            姓名:<input type="text" id="name" value=""> <br>
            年龄:<input type="text" id="age"> <br>
            性别:<input type="radio" name="sex" value="male" checked>男
            <input type="radio" name="sex" value="female">女<br>
            电话:<input type="text" id="phone"><br>
            <input type="button" value="添加" onclick="addCustom()">
            <input type="reset" value="重置">
            
        </form>
    </div>
  1. 获取表格元素。

  2. 创建一个新的表格行(<tr>)元素。

  3. 根据需要创建表格单元格(<td>)元素,并将它们添加到新创建的表格行中。

  4. 将新创建的表格行添加到表格中。

函数:insertRow(args) 是一个用于在 HTML 表格中插入新行的方法。它args接受一个参数,表示要插入新行的索引位置。如果参数为负数,则新行将插入到表格的末尾。

例子:insertRow(-1) 则新行将插入到表格的末尾。

<!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>
    <table id="myTable" border="1">
        <tr>
            <td>行1,列1</td>
            <td>行1,列2</td>
        </tr>
    </table>
    <button onclick="addRow()">添加行</button>
    <script>
        function addRow() {
            // 获取表格元素
            var table = document.getElementById("myTable");

            // 创建一个新的表格行
            var newRow = table.insertRow(-1);

            // 创建表格单元格并添加到新行中
            var cell1 = newRow.insertCell(0);
            var cell2 = newRow.insertCell(1);

            // 设置单元格内容
            cell1.innerHTML = "新行,列1";
            cell2.innerHTML = "新行,列2";
        }
    </script>
</body>
</html>
在添加到新行中创建的新的表格单元格,并添加内容:
		   // 在倒数第二行插入新行
            var newRow = foot.insertRow(rowCount - 1);
            //创建表格单元格并添加到新行中
            var cell1 = newRow.insertCell(0);
            var cell2 = newRow.insertCell(1);
            var cell3 = newRow.insertCell(2);
            var cell4 = newRow.insertCell(3);
            var cell5 = newRow.insertCell(4);
            var cell6 = newRow.insertCell(5);
		 //设置单元格内容
            cell1.innerHTML = '<input type="checkbox">';
            cell2.innerHTML = nameValue;
            cell3.innerHTML = ageValue;
            cell4.innerHTML = sexValue;
            cell5.innerHTML = phoneValue;
            cell6.innerHTML = '<input type="button" value="删除" onclick="delRow(this)">';
实时判断复选框是否被选中,使用监听的方法(否则每次只能在起始的时候判断一次):
// 获取复选框元素
var checkbox = document.getElementById("myCheckbox");

// 为复选框添加事件监听器
checkbox.addEventListener("change", function() {
  // 判断复选框是否被选中
  if (this.checked) {
    // 复选框被选中时执行的方法
    checkedMethod();
  } else {
    // 复选框未被选中时执行的方法
    uncheckedMethod();
  }
});

function checkedMethod() {
  console.log("复选框被选中");
}

function uncheckedMethod() {
  console.log("复选框未被选中");
}
如何获取表格行数,并插入到指定的表格位置:
// 获取表格元素
var table = document.getElementById("myTable");

// 获取表格的行数
var rowCount = table.rows.length;

// 在倒数第一行插入新行
var newRow = table.insertRow(rowCount);
//var newRow = table.insertRow(-1);

// 在新行中插入单元格并设置内容
var cell1 = newRow.insertCell(0);
cell1.innerHTML = "新行,列1";
var cell2 = newRow.insertCell(1);
cell2.innerHTML = "新行,列2";
如何获取单选框选中的value值:
<body>
    性别:<label><input type="radio" name="sex" value="male">男</label>
    <label><input type="radio" name="sex" value="female">女</label><br>
    <button onclick="onPrint()">打印</button>
    <script>
       function onPrint(){
        var sex = document.getElementsByName("sex");
        for (var i = 0; i < sex.length; i++) {
            if (sex[i].checked) {
                console.log(sex[i].value);;
                break;
            }
        }
       }
    </script>
</body>
可以使用以下代码实现表格全选按钮后,选中所有行并删除:

函数:table.deleteRow(args); 是删除表格的某一行;

// 获取表格元素
var table = document.getElementById("myTable");

// 遍历表格的每一行
for (var i = 0; i < table.rows.length; i++) {
    // 将每一行的选中状态设置为true
    table.rows[i].cells[0].firstChild.checked = true;
}

// 删除选中的行
for (var i = table.rows.length - 1; i >= 0; i--) {
    if (table.rows[i].cells[0].firstChild.checked) {
        table.deleteRow(i);
    }
}
在表格中每一行都有Button控件,为其绑定一个函数,当点击该按钮的时候,删除按钮所在行
<table id="myTable">
  <tr>
    <td>1</td>
    <td>2</td>
    <td><button onclick="deleteRow(this)">删除</button></td>
  </tr>
  <tr>
    <td>3</td>
    <td>4</td>
    <td><button onclick="deleteRow(this)">删除</button></td>
  </tr>
  <tr>
    <td>5</td>
    <td>6</td>
    <td><button onclick="deleteRow(this)">删除</button></td>
  </tr>
</table>
<script>
function deleteRow(row) {
  var table = document.getElementById("myTable");
  var rowIndex = row.parentNode.parentNode.rowIndex;
  table.deleteRow(rowIndex);
}
</script>

 实现效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识Lombok

前言 最近读一些公司的业务代码&#xff0c;发现近几年的java项目工程中都使用了lombok&#xff0c;lombok是一个可以自动生成get,set、toString等模板类方法的工具框架&#xff0c;程序再引入lombok后&#xff0c;添加一个注解便可以不写get\set\toString等方法。 Lombok示例…

人工智能_CPU微调ChatGLM大模型_使用P-Tuning v2进行大模型微调_007_微调_002---人工智能工作笔记0102

这里我们先试着训练一下,我们用官方提供的训练数据进行训练. 也没有说使用CPU可以进行微调,但是我们先执行一下试试: https://www.heywhale.com/mw/project/6436d82948f7da1fee2be59e 可以看到说INT4量化级别最低需要7GB显存可以启动微调,但是 并没有说CPU可以进行微调.我们…

C语言中如何进行内存管理

主页&#xff1a;17_Kevin-CSDN博客 收录专栏&#xff1a;《C语言》 C语言是一种强大而灵活的编程语言&#xff0c;但与其他高级语言不同&#xff0c;它要求程序员自己负责内存的管理。正确的内存管理对于程序的性能和稳定性至关重要。 一、引言 C 语言是一门广泛使用的编程语…

【算法历练】动态规划副本—路径问题

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;宙でおやすみ 1:02━━━━━━️&#x1f49f;──────── 2:45 &#x1f504; ◀️ ⏸ ▶️ ☰ &#…

现在在市场上云主机一般多少钱?影响其价格的因素有哪些

现在很多人都会购买云主机来帮助自己存储一些数据&#xff0c;但是很多人在购买云主机的时候最担心的就是云主机的价格。 由于很多人担心云服务器的价格会很高&#xff0c;因此一直在密切关注目前市场上各品牌云主机的相关价格。 下面就给大家详细介绍一下现在市场上一台云主机…

【DDD】学习笔记-领域驱动设计对持久化的影响

资源库的实现 如何重用资源库的实现&#xff0c;以及如何隔离领域层与基础设施层的持久化实现机制&#xff0c;具体的实现还要取决于开发者对 ORM 框架的选择。Hibernate、MyBatis、jOOQ 或者 Spring Data JPA&#xff08;当然也包括基于 .NET 的 Entity Framework、NHibernat…

若依Vue3:新一代前后端分离权限管理系统

若依Vue3&#xff1a;新一代前后端分离权限管理系统 随着技术的不断进步&#xff0c;前后端分离的开发模式逐渐成为主流&#xff0c;特别是在构建权限管理系统时。在这样的背景下&#xff0c;若依Vue3应运而生&#xff0c;作为基于Spring Boot、Spring Security、JWT、Vue3、V…

【C++】树形关联式容器set、multiset、map和multimap的介绍与使用

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.关联式容器 2.键…

二叉搜索树在线OJ题讲解

二叉树创建字符串 我们首先进行题目的解读&#xff1a; 大概意思就是用&#xff08;&#xff09;把每个节点的值给括起来&#xff0c;然后再经过一系列的省略的来得到最后的结果 大家仔细观察题目给出的列子就可以发现&#xff0c;其实这个题目可以大致分为三种情况&#xff1…

基于 LVGL 使用 SquareLine Studio 快速设计 UI 界面

目录 简介注册与软件获取工程配置设计 UI导出源码板级验证更多内容 简介 SquareLine Studio 是一款专业的 UI 设计软件&#xff0c;它与 LVGL&#xff08;Light and Versatile Graphics Library&#xff0c;轻量级通用图形库&#xff09;紧密集成。LVGL 是一个轻量化的、开源的…

[linux][xdp] xdp 入门

xdp 全称 eXpress Data Path&#xff0c;是 linux ebpf 中的一个功能。ebpf 在内核中预留了一些插入点&#xff0c;用户可以在这些插入点插入自己的处理逻辑&#xff0c;当数据路过插入点时可以做一些预期的处理&#xff0c;具体实现方式如下&#xff1a; ① 用户编写数据处理…

【C++私房菜】序列式容器的迭代器失效问题

目录 一、list的迭代器失效 二、vector的迭代器失效 1、空间缩小操作 2、空间扩大操作 三、总结 在C中&#xff0c;当对容器进行插入或删除操作时&#xff0c;可能会导致迭代器失效的问题。所谓迭代器失效指的是&#xff0c;原先指向容器中某个元素的迭代器&#xff0c;在…

尚硅谷webpack5笔记2

Loader 原理 loader 概念 帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 loader 执行顺序 分类pre: 前置 loadernormal: 普通 loaderinline: 内联 loaderpost: 后置 loader执行顺序4 类 loader 的执行优级为:pre > normal > inline > post 。相…

在Node.js中如何实现用户身份验证和授权

当涉及到构建安全的应用程序时&#xff0c;用户身份验证和授权是至关重要的一环。在Node.js中&#xff0c;我们可以利用一些流行的库和技术来实现这些功能&#xff0c;确保我们的应用程序具有所需的安全性。本篇博客将介绍如何在Node.js中实现用户身份验证和授权。 用户身份验…

密码学系列(四)——对称密码2

一、RC4 RC4&#xff08;Rivest Cipher 4&#xff09;是一种对称流密码算法&#xff0c;由Ron Rivest于1987年设计。它以其简单性和高速性而闻名&#xff0c;并广泛应用于网络通信和安全协议中。下面是对RC4的详细介绍&#xff1a; 密钥长度&#xff1a; RC4的密钥长度可变&am…

精品springboot相亲网站预约

《[含文档PPT源码等]精品基于springboot相亲网站[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&#xff1a;HTML5,CSS3、Ja…

在Golang中简化日志记录:提升性能和调试效率

最大化效率和有效故障排除&#xff1a;在Golang中简化日志记录 日志记录是软件开发的一个基本方面&#xff0c;有助于调试、监控和理解应用程序的流程。在Golang中&#xff0c;有效的日志记录实践可以显著提高性能并简化调试过程。本文探讨了优化Golang日志记录的技术&#xf…

常用git 打tag命令

1.查看所有tag git tag 2.创建 v5.0.0的tag git tag v5.0.0 git tag &#xff08;创建后查看&#xff09; 3.推送到远程tag git push origin v5.0.0 4.删除远程tag git push origin --delete v5.0.0 5.删除本地tag git tag -d v5.0.0 6.添加带有备注信息的tag git tag v5.…

SpringCloud认识微服务

文章目录 1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 微服务架构是一种架构模式&…

Qcom camera hal简介

目录 背景 Android相机软件框架 Qcom HAL主要包括Camx和Chi两部分 Camx中Pipeline 和 node 下图是简单模型的pipeline (sensor --> IFE --> IPE --> SinkTarget) Pipeline中的buffer管理 IFE output port的buffer在Camx中申请 IPE output port使用的buffer来自…