Js: 读取数据并动态生成表格(读取新数据时,应该删除之前已经渲染出来的数据)

news2024/11/24 23:09:13

前言

使用JS读取数据并动态生成表格,但是发现在读取新一轮的数据时,新数据是在之前已经渲染的数据后面进行追加。因此需要解决的问题是:在读取新数据之前,把之前已经渲染的数据进行清空。

解决

1、首先写出表格的表头和主干

<!-- 表格 -->
<div class="table">
  <table class="table-borderless">
    <!-- 表头字段 -->
    <thead>
      <tr class="field">
        <th>课程数量</th>
        <th>课件数量</th>
        <th>学习人数</th>
        <th>学习人次</th>
        <th>考试人数</th>
        <th>考试人次</th>
      </tr>
    </thead>

    <!-- 主干:表格的主要数据 -->
    <tbody id="tbMain" class="tabledata">
    </tbody>
  </table>
</div>

2、读取数据并动态生成表格

 writeData();  //调用函数

 // 编写函数:动态生成表格并且读入数据
 function writeData(){
   // 获取表格的主干节点
   var tbody = document.getElementById("tbMain");
   // 读取数据
   for (var i = 0; i < data.length; i++) {  
     var row = document.createElement("tr");   //创建行
     for (var j = 0; j <= 5; j++){           //j是表格内容的列数,比如此处是6列
       var cell = document.createElement("td");   //i行j列的元素
       cell.innerHTML = data[i][j]
       row.appendChild(cell);      //加入行 ,下面类似    
     }   
     var trow=row;    
     tbody.appendChild(trow);
   }        
 }

但是仅仅这么写的话,后续重新读取的数据会在先前读取的数据基础上进行追加渲染,因此应该先删除之前已经渲染的数据,然后再读取新一轮的数据。

3、改进:读取新数据前进行节点删除

  • 改进思路:
    应该在读取新一轮数据之前,对原先已经渲染的数据进行删除
  • 代码思路:
    判断表格主体部分是否有子节点,如果有就进行删除,直到没有任何子节点说明之前渲染的数据已全部清空
 // 如果此时有数据,应该先删除,然后再读取对应专区的数据
 var child=tbody.lastElementChild;
 while(child){
   tbody.removeChild(child);
   child=tbody.lastElementChild;
 }
 // 至此已经清空了表格所有数据

在这里插入图片描述

完整代码

以下是读取数据并动态生成表格的代码,在读取新数据时,已经删除之前渲染出来的数据,避免多轮数据进行追加的现象:

writeData();  //调用函数

// 编写函数:动态生成表格并且读入数据
function writeData(){

 // 获取表格的主干节点
 var tbody = document.getElementById("tbMain");
 
 // 如果此时有数据,应该先删除,然后再读取对应专区的数据
 var child=tbody.lastElementChild;
 while(child){
   tbody.removeChild(child);
   child=tbody.lastElementChild;
 }
 // 至此已经清空了表格所有数据
 
 // 读取数据
 for (var i = 0; i < data.length; i++) {  
   var row = document.createElement("tr");   //创建行
   for (var j = 0; j <= 5; j++){           //j是表格内容的列数,比如此处是6列
     var cell = document.createElement("td");   //i行j列的元素
     cell.innerHTML = data[i][j]
     row.appendChild(cell);      //加入行 ,下面类似    
   }   
   var trow=row;    
   tbody.appendChild(trow);
 }           
}         

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

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

相关文章

rsync增量原理,及C++实现

1、目标端将目标文件按700字节为大小分块计算强弱校验值&#xff08;强&#xff1a;md5 弱&#xff1a;adler32&#xff0c;注&#xff1a;弱校验码计算量小速度快&#xff0c;先比对弱校验码&#xff0c;弱校验值一样再比对强校验码&#xff09;&#xff0c;再结合块号组成一…

【代码随想录 | Leetcode | 第五天】链表 | 移除链表元素 | 设计链表

前言 欢迎来到小K的Leetcode|代码随想录|专题化专栏&#xff0c;今天将为大家带来移除链表元素和设计链表的分享✨ 目录 前言203. 移除链表元素707. 设计链表总结 203. 移除链表元素 ✨题目链接点这里 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所…

Nginx 解析漏洞复现

Nginx 解析漏洞复现 一、环境搭建二、漏洞原理三、漏洞复现 一、环境搭建 如下介绍kali搭建的教程 cd ~/vulhub/nginx/nginx_parsing_vulnerability // 进入指定环境 docker-compose up -d // 启动环境docker-compose ps使用这条命令查看当前正在运行的环境 访问http://y…

生成对抗网络与优化算法(第十次组会)

生成对抗网络与优化算法(第十次组会) 生成对抗网络(Generative Adversarial Network)优化算法生成对抗网络(Generative Adversarial Network) 优化算法

126、仿真-基于51单片机16×16点阵滚动显示仿真设计(Proteus仿真+程序+配套资料等)

方案选择 单片机的选择 方案一&#xff1a;STM32系列单片机控制&#xff0c;该型号单片机为LQFP44封装&#xff0c;内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ&#xff0c;在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节…

-bash: ./est.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

方法一&#xff1a; 方法二&#xff1a; sed -i s/\r$// xxx.sh

完整的电商平台后端API开发总结

对于开发一个Web项目来说&#xff0c;无论是电商还是其他品类的项目&#xff0c;注册与登录模块都是必不可少的&#xff1b;注册登录功能也是我们在日常生活中最长接触的&#xff0c;对于这个业务场景的需求与逻辑大概是没有什么需要详细介绍的&#xff0c;市面上常见的邮箱注册…

数仓学习---7、数据仓库设计、数据仓库环境准备

这是本人的学习过程&#xff0c;看到的同道中人祝福你们心若有所向往&#xff0c;何惧道阻且长&#xff1b; 但愿每一个人都像星星一样安详而从容的&#xff0c;不断沿着既定的目标走完自己的路程&#xff1b; 最后想说一句君子不隐其短&#xff0c;不知则问&#xff0c;不能则…

Stable Diffusion - 高清局部重绘 (Inpaint) 调整脸部和手部细节

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131775232 在 Stable Diffusion 中&#xff0c;局部重绘(Inpaint)功能是一种可以让你在图像上删除不想要的区域&#xff0c;并用周围的像素自动填…

JAVA中的Socket编程、通信协议、传输协议

JAVA中的Socket编程 一、Socket概述 Socket&#xff0c;建立起客户端和服务器之间的连接&#xff0c;实现数据的传输和交互&#xff0c;它既可以发送请求&#xff0c;也可以接受请求&#xff0c;一个Socket由一个IP地址和一个端口号唯一确定&#xff0c;利用Socket能比较方便的…

Springboot + Vue 上传Word、PDF文档并保留内部格式

因为业务需求&#xff0c;上传Word文件需要编辑&#xff0c;但如何使用Blob方式&#xff0c;在数据库里存文件&#xff0c;就会造成格式消失。所以修改思路&#xff1a;上传文件到服务器本地&#xff0c;保证数据存储的完整性。 前端 <el-upload class"upload-demo&quo…

centos7.8从卸载python2,安装python3

因为目前所有环境都是python2.7.5&#xff0c;但是项目上使用的是python3.7.5&#xff0c;迫切需要使用python3.7.5验证。安装遇到困难&#xff0c;记录一下。 首先卸载python2&#xff0c;如果不想卸载python2的可以跳过 这里卸载python2和其依赖的yum 先卸载python2.7.5 …

基于意外流行的自适应模因算法求解分布式柔性作业车间调度问题——付源代码和论文

实在是太忙了&#xff0c;终于闲下来更新一下CSDN来介绍自己的工作 《Surprisingly Popular-Based Adaptive Memetic Algorithm for Energy-Efficient Distributed Flexible Job Shop Scheduling》发表在IEEE Transactions on Cybernetics上。 原文链接-可下载 Matlab代码 IEEE…

pdf能转成ppt格式吗?这几个方法你试过了吗

作为办公人士&#xff0c;掌握不同文件格式之间的转换技能是必不可少的。每当毕业季来临&#xff0c;我都会收到许多刚刚步入职场的小伙伴们的求助&#xff0c;寻找PDF转PPT的方法。所以&#xff0c;我总结了以下三种方法&#xff0c;希望能帮助大家解决这个一直以来困扰着许多…

RabbitMQ死信交换机、TTL及延迟队列

一&#xff0c;死信交换机 1&#xff0c;什么是死信交换机 了解死信交换机之前我们先来了解一下什么是死信&#xff0c;当一个队列满足下面的三种情况的时候我们一般称为死信&#xff08;dead letter&#xff09;&#xff1a; 消费者使用basic.reject或 basic.nack声明消费失…

深入 Linux 进程

问题 进程参数 和 环境变量 对于进程意味着什么&#xff1f; 进程参数和环境变量的意义 一般情况下&#xff0c;子进程的创建是为了解决某个子问题 子进程解决问题需要父进程的 "数据输入" (进程参数 & 环境变量) 设计原则&#xff1a; 子进程启动时必然用到…

SpringCloud学习路线(1)—— 从头开始的微服务

一、服务架构的历史 现有的服务框架&#xff1a; 单体架构 概念&#xff1a; 将业务所有功能集中在一个项目中开发&#xff0c;打包部署优点&#xff1a; 架构简单&#xff0c;部署成本低缺陷&#xff1a; 耦合度高 分布式架构 概念&#xff1a; 根据业务功能对系统进行拆分&a…

前端两种实现轮播图方式

今天研究两种简单实现轮播图功能的方式。 目录 Layui实现轮播图 码云下载 提取静态文件 示例 注意 参数说明 改为轮播图 增加图片资源文件 轮播栏目修改 改为上下切换 切换事件 脚本中绑定改变事件 控制器查看 Swiper实现轮播图 下载swiper 下载到本地 加载sw…

【数据结构】_3.List接口实现类ArrayList与线性表

目录 1.List接口 1.1 List接口的集合关系网络 1.2 List的使用 2. ArrayList与顺序表 2.1 线性表 2.2 顺序表 2.3 ArrayList 2.3.1 ArrayList的集合关系网络 2.3.2 ArrayList的使用 2.3.2.1 ArrayList的构造方法 2.3.2.2 ArrayList的扩容机制逻辑示图如下&#xff1…

企业如何通过CRM提高客户转化?

现如今&#xff0c;企业想要给潜在客户留下深刻的印象&#xff0c;那么就需要一系列的措施和手段。通过CRM管理系统让潜在客户信任企业&#xff0c;更好地进行客户培育&#xff0c;从而提高潜在客户转化。下面来说说&#xff0c;企业提高潜在客户转化的7个做法。 1、永远不要让…