javaScript实战项目之动态表格【文末附源码】

简介: js中BOM实战项目之动态表格🍅 Java学习路线:搬砖工的Java学习路线🍅 作者:程序员小王🍅 程序员小王的博客:https://www.wolai.com/wnaghengjie/ahNwvAUPG2Hb1Sy7Z8waaF🍅 扫描主页左侧二维码,加我微信 一起学习、一起进步🍅 欢迎点赞 👍 收藏 ⭐留言 📝

一、动态删除/生成表格要求:

1.HTML标签只写三行表头

2.通过JS来写动态的表格(有多少组数据,就自动创建多少行表格)

3.通过JS来删除动态的表格(一行一行的表格)

4.不涉及调用后台数据


先来看一下效果:

1.png


二、动态删除、添加的思路(知识点铺垫):

(1)动态添加数据

1、创建文本节点:document.createTextNode(“文本”);

2、创建标签节点:document.createElement(“标签名”);

3、向父节点上追加节点: 父标签对象.appendChild(子标签对象)


1.创建文本节点:document.createTextNode(“文本”);
2.创建新的标签对象:
var tag=document.createElement("标签名");
eg:<h1>HelloWorld</h1>
    var tag=document.createElement("h1");
    tag.innerHTML="HelloWorld";
3.添加新标签对象:
parentTag.appendChild(newTag);-->将newTag添加到现有标签的最后面,称为父标签的最后一个孩子节点

0.png


案例:

<head>
    <meta charset="UTF-8">
  <style>
    div{
      width: 100px;
      height: 100px;
      background-color: red;
    }
  </style>
  <script type="text/javascript">
    function  test1(){
      //1、创建div对象
        var div = document.createElement("div");
      //2.创建文本对象
        var textNode = document.createTextNode("whj");
      //3.将文本节点追加到div标签节点中,将textNode节点添加到div最后一个子节点上
        div.appendChild(textNode);
      //4.将div标签节点追加到当前页面中
        var body = document.getElementById("bd");
        body.appendChild(div);
    }
  </script>
</head>
<body id="bd">
<input type="button" value="单击创建div" onclick="test1()">
</body>


(2)动态删除

父标签对象.removeChild(子标签对象);


1.删除标签对象:
parentTag.removeChild(childTag)-->从父标签对象中删除孩子标签对象


案例:单击删除div+div的whj文本

2.png


 

<head>
    <meta charset="UTF-8">
    <style>
        div{
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
    <script type="text/javascript">
     function test1(){
         var body = document.getElementById("body");
         var div = document.getElementById("div");
         body.removeChild(div);
     }
    </script>
</head>
<body  id="body">
<div id="div">
    whj
</div>
<input type="submit" value="单击删除div+div的whj文本" onclick="test1()">
</body>


三、DOM实战-动态表格

3.png

javascript实现动态删除、添加先捋一下思路:

要想实现动态效果,那就得使用增删节点的知识。


1、动态表格添加数据分析

事件源头:发送事件的标签 提交的标签

事件属性:用户的操作 单击

事件监听:将用户输入的数据填充到表格中

1、用户输入的数据

2、填充到表格里

function addUser(){
  //1、通过标签元素value属性值 获取用户输入内容
  //2、将输入的内容封装成文本节点
  //3、创建td标签对象
  //4、将对应的文本节点放到td标签中
  //5、创建tr文本节点
  //6、将对应的td的标签放到tr标签中
  //7、将tr放到表格中
}


2、动态表格删除数据分析:

事件源头:发送事件的标签 删除的按钮

事件属性:用户的操作 单击

事件监听:表格中的一行数据删除(tr)

1、获取删除哪一行数据

2、删除


function removeUser(){
  //1、先获取事件源
      var buttonSource=event.target;
  //2.获取事件源的父标签(td)的父标签(tr)
      var tr=buttonSource.parentNode.parentNode;
  //3.获取tr标签的父标签(tbody或者是thead,为了避免找不到父标签使用parentNode)
      var parentNode=tr.parentNode;
  //4.删除这一行数据
     parentNode.removeClild(tr);
}


3、代码实现动态删除、添加表格:

(1)代码结构

4.png


(2)HTML内容:

<body>
<!--换行-->
</br>
<!--换行-->
</br>
<div id="div">
<!--居中-->
    <center>
        姓名:<input type="text" name="name" id="name">
        年龄:<input type="text" name="age" id="age">
        成绩:<input type="text" name="score" id="score">
        职位:<input type="text" name="job" id="job">
        <input type="button" id="button" value="添加" onclick="addUser()">
    </center>
</div>
<hr color="red"/>
<div class="container">
    <p class="btn btn-danger mb-3" data-table="example">DOM实战-动态表格</p>
    <table class="table table-bordered table-striped" id="table">
        <thead class="thead-dark">
        <tr>
            <th scope="col">姓名</th>
            <th scope="col">年龄</th>
            <th scope="col">成绩</th>
            <th scope="col">职位</th>
            <th scope="col">操作</th>
        </tr>
        </thead>
        <tbody id="tbody">
        <tr>
            <td>刘浩</td>
            <td>28</td>
            <td>100</td>
            <td>老师</td>
            <td>
                <input type="button" style="color: red" value="删除" onclick="deleteUser()">
            </td>
        </tr>
        <tr>
            <td>王恒杰</td>
            <td>21</td>
            <td>99</td>
            <td>组长</td>
            <td>
                <input type="button" style="color:red" value="删除" onclick="deleteUser()">
            </td>
        </tr>
        <tr>
            <td>张西</td>
            <td>20</td>
            <td>88</td>
            <td>学生</td>
            <td>
                <input type="button" style="color: red" value="删除" onclick="deleteUser()">
            </td>
        </tr>
        </tbody>
    </table>
</div>
</body>


(3)CSS内容:

   <meta charset="UTF-8">
    <title>动态表格</title>
    <link rel="stylesheet" href="http://cdn.bootstrapmb.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <style>
        .container {
            margin: 80px auto;
        }
    </style>


(4) JavaScript内容:

   <script type="text/javascript">
            //将用户输入的数据填充到表格中
            function addUser(){
                //1、通过表单元素value属性值 获取用户输入内容  字符串
                var name = document.getElementById("name").value
                var tel = document.getElementById("tel").value
                var email = document.getElementById("email").value
                //2、将输入的内容封装成文本节点
                var nameNode = document.createTextNode(name);
                var telNode = document.createTextNode(tel);
                var emailNode = document.createTextNode(email);
                //3 、创建td标签对象
                var nameTd = document.createElement("td");
                var telTd = document.createElement("td");
                var emailTd = document.createElement("td");
                //4、将对应的文本节点放入对应的td里
                nameTd.appendChild(nameNode);
                telTd.appendChild(telNode);
                emailTd.appendChild(emailNode);
                //5、创建tr标签对象
                var tr = document.createElement("tr");
                //6、将td放入tr中
                tr.appendChild(nameTd)
                tr.appendChild(telTd)
                tr.appendChild(emailTd);
                //7、将tr放入表格中
                var table = document.getElementById("tb");
                table.appendChild(tr);
            }
            //动态删除  删除当前行数据
            function removeUser1(){
                //删除语法  父节点.removeChild(子节点)
                //通过事件对象获取事件发生的源头
                var delbtn = event.target ;
                //通过事件源获取父节点的父节点 就是tr标签对象
                var tr = delbtn.parentNode.parentNode;
                var parNode = tr.parentNode;
                parNode.removeChild(tr);
            }
            //动态删除  删除当前行数据
            function removeUser2(delbtn){
                //删除语法  父节点.removeChild(子节点)
                var tr = delbtn.parentNode.parentNode;
                var parNode = tr.parentNode;
                parNode.removeChild(tr);
            }
        </script>


源代码在githee仓库:

程序员小王Gitee: https://gitee.com/wanghengjie563135/java-web-notes.git


👉在此,鸣谢:刘浩老师

📌 作者:王恒杰

❌ 勘误: 无

📜 声明: 由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!

🍅 欢迎点赞 👍 收藏 ⭐留言 📝


相关文章
|
10天前
|
JavaScript
Nest.js 实战 (十一):配置热重载 HMR 给服务提提速
这篇文章介绍了Nest.js服务在应用程序引导过程中,TypeScript编译对效率的影响,以及如何通过使用webpackHMR来降低应用实例化的时间。文章包含具体教程,指导读者如何在项目中安装依赖包,并在根目录下新增webpack配置文件webpack-hmr.config.js来调整HMR相关的配置。最后,文章总结了如何通过自定义webpack配置来更好地控制HMR行为。
|
3天前
Nest.js 实战 (十二):优雅地使用事件发布/订阅模块 Event Emitter
这篇文章介绍了在Nest.js构建应用时,如何通过事件/发布-订阅模式使应用程序更健壮、灵活、易于扩展,并简化服务间通信。文章主要围绕@nestjs/event-emitter模块展开,这是一个基于eventemitter2库的社区模块,提供了事件发布/订阅功能,使得实现事件驱动架构变得简单。文章还介绍了如何使用该模块,包括安装依赖、初始化模块、注册EventEmitterModule、使用装饰器简化监听等。最后总结,集成@nestjs/event-emitter模块可以提升应用程序的事件驱动能力,构建出更为松耦合、易扩展且高度灵活的系统架构,是构建现代、响应迅速且具有高度解耦特性的Nest.
|
11天前
|
前端开发 Java UED
JSF 面向组件开发究竟藏着何种奥秘?带你探寻可复用 UI 组件设计的神秘之路
【8月更文挑战第31天】在现代软件开发中,高效与可维护性至关重要。JavaServer Faces(JSF)框架通过其面向组件的开发模式,提供了构建复杂用户界面的强大工具,特别适用于设计可复用的 UI 组件。通过合理设计组件的功能与外观,可以显著提高开发效率并降低维护成本。本文以一个具体的 `MessageComponent` 示例展示了如何创建可复用的 JSF 组件,并介绍了如何在 JSF 页面中使用这些组件。结合其他技术如 PrimeFaces 和 Bootstrap,可以进一步丰富组件库,提升用户体验。
21 0
|
11天前
|
大数据 数据处理 分布式计算
JSF 逆袭大数据江湖!看前端框架如何挑战数据处理极限?揭秘这场技术与勇气的较量!
【8月更文挑战第31天】在信息爆炸时代,大数据已成为企业和政府决策的关键。JavaServer Faces(JSF)作为标准的 Java Web 框架,如何与大数据技术结合,高效处理大规模数据集?本文探讨大数据的挑战与机遇,介绍 JSF 与 Hadoop、Apache Spark 等技术的融合,展示其实现高效数据存储和处理的潜力,并提供示例代码,助您构建强大的大数据系统。
21 0
|
11天前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
34 0
|
11天前
|
JavaScript 安全 数据安全/隐私保护
深入Node.js与Express:从表单接收到数据验证的完整指南——实战技巧揭秘后端开发中的表单处理流程
【8月更文挑战第31天】在Web开发中,处理表单数据至关重要。本文通过实例详细讲解了如何利用Node.js与Express框架接收和验证表单数据。首先,搭建环境并初始化一个简单的Express应用;接着,演示如何接收用户注册表单中的`username`和`email`字段;最后,引入`joi`模块进行数据验证,确保数据安全准确。掌握这些技能有助于开发者构建更安全、友好的Web应用。随着Node.js和Express的不断进步,未来将有更多高级功能值得期待。
21 0
|
11天前
|
前端开发 JavaScript 开发者
【前端革新力】React与CSS-in-JS完美邂逅:从styled-components到emotion,全面解析样式管理新趋势的实战应用与优势剖析!
【8月更文挑战第31天】CSS-in-JS 作为一种新兴的样式管理方式,近年来在前端社区受到广泛关注。它将样式嵌入 JavaScript,实现了样式与逻辑的高度耦合,提升了开发效率并解决了全局样式污染等问题。本文通过具体代码示例,探讨 CSS-in-JS 在 React 开发中的应用,并分享实践心得。首先介绍了 CSS-in-JS 的基本概念,然后详细展示了如何使用 styled-components 和 emotion 这两个流行库创建样式化组件。
17 0
|
JavaScript 前端开发
JavaScript制作表格隔行变色效果(新浪微博中的应用)
JavaScript制作表格隔行变色效果(新浪微博中的应用)
JavaScript制作表格隔行变色效果(新浪微博中的应用)
|
2月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
69 2
|
2月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
62 4