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

前言

使用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.hqwc.cn/news/27895.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

堆排序+TopK问题

本期带大家学习堆排序TopK问题&#x1f308;&#x1f308;&#x1f308; 1、堆排序 堆排序&#xff0c;是根据堆的结构而设计出的一种排序算法&#xff0c;其时间复杂度&#xff1a;O(N * logN)&#xff0c;空间复杂度&#xff1a;O(1)。 堆排序的前提是需要 构建一个堆&…

Postman接口自动化之postman脚本编写

这是之前搞的接口自动化方案&#xff0c;已经在业务测试中实现了使用postman编写接口脚本&#xff0c;通过GitHubJenkinsemail html report实现了接口自动化&#xff0c;现在分块整理一下。 postman脚本编写 1、创建集合 和 目录&#xff1a; 一条业务线下的接口可以放到一个…

微信小程序中常见组件的使用

文章目录 微信小程序中常见组件的使用视图组件viewscroll-viewswipermovable-area 基础组件icontextrich-textprogress 表单组件buttoncheckbox、checkbox-grouplabelforminputpicker单列选择器多列选择器时间选择器&日期选择器&地区选择器 picker-viewradiosliderswit…

(简单)剑指Offer 21. 调整数组顺序使奇数位于偶数前面 Java

记数组nums的长度为n。从先nums左侧开始遍历&#xff0c;如果遇到的是奇数&#xff0c;就表示这个元素已经调整完成&#xff0c;继续从左往右遍历&#xff0c;直到遇到一个偶数。然后从nums右侧开始遍历&#xff0c;如果遇到的是偶数&#xff0c;就表示这个元素已经调整完成了&…

如何有效跟踪员工时间:时间管理方法和工具

许多人认为时间追踪是一件麻烦事&#xff0c;会分散他们对主要职责的注意力。 员工不喜欢填写工时表&#xff0c;也不喜欢受到额外的监督&#xff1b;对于管理者来说&#xff0c;时间跟踪始终是一项额外的工作&#xff0c;要确保所有员工正确、按时地填写工时表。 但无论如何…

Ubuntu开机自启动设置

一、创建执行脚本 这里有两个程序所以编写了两个脚本&#xff0c;第一脚本(master.sh)&#xff1a; gnome-terminal -- bash -c "source /home/zyy/anaconda3/bin/activate wood2;cd /home/zyy/pycharmProject/master_program;python main.py > /home/zyy/pycharmProj…

redolog 、undolog 和binlog

redolog(可以恢复数据&#xff0c;保证数据不丢失) 、undolog(事务回滚) 和binlog&#xff08;主从同步数据&#xff09; 脏页 在mysql中&#xff0c;当内存数据页和磁盘数据页上的内容不一致时&#xff0c;则称这个内存页为脏页 脏页什么时候会刷入磁盘&#xff1f; ● redo…

【JVM】14. 堆外内存

文章目录 堆外内存的意义堆外内存(Off-heap memory)是指在计算机内存管理之外进行分配和使用的内存空间。与堆内内存(Heap memory)不同,堆外内存不受Java虚拟机(JVM)的垃圾回收机制控制,需要手动进行内存的分配和释放。 堆外内存通常由操作系统提供支持,可以通过直接…

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

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

概率论的学习和整理16: 泊松分布(未完成)

目录 简单的扩展到泊松分布 比较整体的动态过程&#xff0c;增加实验次数时 当二项分布&#xff0c;n很大&#xff0c;p很小的时候&#xff0c;会趋向泊松分布 当n足够大时&#xff0c;二项分布趋向于正态分布。这个结论在概率论中被称为中心极限定理&#xff0c;它是概率论中一…

应用案例 | 高效的工厂资产管理

自加入艾默生的DeltaV联盟产品计划以来&#xff0c;Softing一直致力于将设备管理的应用范围扩大到整个过程自动化工厂&#xff0c;并将设备管理的访问范围扩展到企业外部。 一 背景 随着现代流程工业对能源效率及灵活性需求的日益增长&#xff0c;在不同系统之间交换过程数据和…

【Linux】进程信号 -- 信号产生 | 系统调用、硬件、软件的信号发送

信号的旧识引入信号引入signal调用 系统调用向目标进程发送信号模拟实现一个kill命令raise给自己发送任意信号abort给自己发送指定信号(6)SIGABRT 硬件异常产生信号除0异常野指针访问异常 软件条件产生信号拓展 总结思考进程退出时核心转储问题小实验 信号的旧识引入 kill -l是…