当前位置: 首页 > news >正文

使用JS编写动态表格

JavaScript动态表格生成

引言:动态表格的核心价值

在现代Web开发中,动态生成表格是展示结构化数据的常用技术。通过JavaScript实现表格动态生成不仅提升了用户体验,还降低了数据传输量。本文将通过一个数学计算参考表的案例,详细解析如何高效实现动态表格生成。

实现效果

image-20250715231110196

完整实现代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Calculation Reference Table</title>
</head><body><div class="container"><h1>Calculation Reference Table Generator</h1><button class="btn" id="generateBtn">Generate Table</button><div class="table-container"><table id="calculationTable"><thead><tr><th>x</th><th></th><th>1/x</th><th>√x</th></tr></thead><tbody><!-- Table will be generated here by JavaScript --></tbody></table></div><script>document.getElementById('generateBtn').addEventListener('click', generateTable);function generateTable() {const tableBody = document.querySelector('#calculationTable tbody');tableBody.innerHTML = '';// Generate table for x values from 1 to 5 in increments of 1for (let i = 1; i <= 5; i++) {// Use float representation (1.0, 2.0, etc.) as requestedconst x = i + 0.0;// Calculate valuesconst square = x ** 2;// Handle reciprocal carefully to avoid floating-point precision issuesconst reciprocal = (1 / x).toFixed(2);const squareRoot = Math.sqrt(x).toFixed(2);// Create table rowconst row = document.createElement('tr');// Add cells to rowrow.innerHTML = `<td>${x.toFixed(1)}</td><td>${square.toFixed(1)}</td><td>${reciprocal}</td><td>${squareRoot}</td>`;tableBody.appendChild(row);}}// Generate table on page loadwindow.onload = generateTable;</script>
</body></html>

核心技术深度解析

1. 表结构

  • 标签中为表头部分,这是固定不变的
  • image-20250715231408398
<div class="table-container"><table id="calculationTable"><thead><tr><th>x</th><th></th><th>1/x</th><th>√x</th></tr></thead><tbody><!-- Table will be generated here by JavaScript --></tbody></table></div>
  • 标签中是我们需要使用JS代码生成的表格内容
  • image-20250715231542662

2. 生成逻辑

核心功能
  1. 按钮事件监听
    document.getElementById('generateBtn').addEventListener('click', generateTable);
    
    • 当用户点击ID为 generateBtn 的按钮时,触发 generateTable 函数。
  2. 页面加载初始化
    window.onload = generateTable;
    
    • 页面加载完成后自动调用 generateTable,首次生成表格。
generateTable 函数解析
function generateTable() {const tableBody = document.querySelector('#calculationTable tbody');tableBody.innerHTML = ''; // 清空表格内容for (let i = 1; i <= 5; i++) {const x = i + 0.0; // 转换为浮点数(如 1.0, 2.0)// 计算数值const square = x ** 2;               // 平方(x²)const reciprocal = (1 / x).toFixed(2); // 倒数(1/x),保留2位小数const squareRoot = Math.sqrt(x).toFixed(2); // 平方根(√x),保留2位小数// 创建表格行const row = document.createElement('tr');row.innerHTML = `<td>${x.toFixed(1)}</td>    <!-- x值(保留1位小数)--><td>${square.toFixed(1)}</td> <!-- 平方值 --><td>${reciprocal}</td>       <!-- 倒数 --><td>${squareRoot}</td>       <!-- 平方根 -->`;tableBody.appendChild(row); // 插入行}
}
表格数据逻辑

x1 到 5 的每个值,计算四列数据:

  1. x:原始值(格式化为 x.0,如 1.0
  2. :平方值(如 1.01.0
  3. 1/x:倒数(保留两位小数,如 1/2=0.50
  4. √x:平方根(保留两位小数,如 √2≈1.41

📌 示例输出(前两行)

x1/x√x
1.01.01.001.00
2.04.00.501.41

关键技术细节
  1. 浮点数处理
    • 通过 x = i + 0.0 将整数转为浮点数(如 11.0)。
    • 使用 .toFixed(N) 控制小数位数(避免浮点精度问题)。
  2. 安全计算
    • 倒数计算 (1/x).toFixed(2):确保结果为两位小数(如 1/3→0.33)。
    • 平方根 Math.sqrt(x).toFixed(2):对无理数截断(如 √2≈1.41)。
  3. DOM操作优化
    • 使用 innerHTML 清空表格(tableBody.innerHTML = '')。
    • 通过模板字符串批量生成表格行(避免多次DOM操作)。
document.getElementById('generateBtn').addEventListener('click', generateTable);function generateTable() {const tableBody = document.querySelector('#calculationTable tbody');tableBody.innerHTML = '';// Generate table for x values from 1 to 5 in increments of 1for (let i = 1; i <= 5; i++) {// Use float representation (1.0, 2.0, etc.) as requestedconst x = i + 0.0;// Calculate valuesconst square = x ** 2;// Handle reciprocal carefully to avoid floating-point precision issuesconst reciprocal = (1 / x).toFixed(2);const squareRoot = Math.sqrt(x).toFixed(2);// Create table rowconst row = document.createElement('tr');// Add cells to rowrow.innerHTML = `<td>${x.toFixed(1)}</td><td>${square.toFixed(1)}</td><td>${reciprocal}</td><td>${squareRoot}</td>`;tableBody.appendChild(row);}}// Generate table on page loadwindow.onload = generateTable;

结语

动态表格生成是Web开发的核心技能,通过本文解析可以看到,即使是简单的数值表也蕴含着深刻的开发原理和实践技巧。掌握这些知识后,您可轻松扩展应用范围至财务系统、科学计算、教育工具等多个领域。

http://www.dtcms.com/a/280339.html

相关文章:

  • 【env环境】rtthread5.1.0使用fal组件
  • AI的外挂知识库,RAG检索增强生成技术
  • 【PTA数据结构 | C语言版】将表达式树转换成中缀表达式
  • 数仓面试题
  • 2025最新国产用例管理工具评测:Gitee Test、禅道、蓝凌测试、TestOps 哪家更懂研发协同?
  • docker停止所有容器和删除所有镜像
  • 从一道题目(阿里2014 Crackme_2)开启unidbg还原算法入门(转载)
  • 强化学习书籍
  • vscode 打开c++文件注释乱码
  • 分布式存储之Ceph使用指南--部署篇(未完待续)
  • Claude 背后金主亚马逊亲自下场,重磅发布 AI 编程工具 Kiro 现已开启免费试用
  • 【交叉编译报错】fatal: not a git repository (or any of the parent directories): .git
  • 分布式全局唯一ID生成:雪花算法 vs Redis Increment,怎么选?
  • 内存的基础相关知识,什么是内存,内存管理
  • 死锁问题以及读写锁和自旋锁介绍【Linux操作系统】
  • Spring 中 @Component和@Bean注解的区别
  • 为何说分布式 AI 推理已成为下一代计算方式
  • SpringBoot 2.x→3.0升级实战:Jakarta EE兼容性改造清单
  • kotlin布局交互
  • Kotlin聚合方法
  • Python 操作Excel工作表:添加、删除、移动、隐藏
  • 前端安全指南:防御XSS与CSRF攻击
  • 给 Excel 整列空格文字内容加上前缀:像给文字穿衣服一样简单!
  • Excel制作玫瑰图
  • PostgreSQL FATAL: sorry, too many clients already 连接数爆满的处理办法
  • excel 通过openpyxl表格下载和插入图片
  • 京东平台商品评论接口接入指南与代码实现
  • 国内大模型技术与应用综述
  • 区块链:以太坊侧链Polygon
  • 日常运维问题汇总-59