JavaScript 怎么处理后端接口返回的员工考勤数据并生成表格

轻辰同学_9197

轻辰同学_9197

2026-09-05

923人浏览

原创

javascript解析后端json考勤数据,校验数组及字段后动态创建table元素,用textcontent安全渲染表头与行数据,状态高亮、空值显“–”、数字0转“✓”,支持分页筛选导出等扩展。

javascript 怎么处理后端接口返回的员工考勤数据并生成表格

JavaScript 处理后端返回的员工考勤数据并生成表格,核心是:解析接口响应、结构化数据、动态渲染 HTML 表格。关键不在于“写多复杂”,而在于“数据对得上、字段不丢、格式可读”。

1. 确保接口返回的数据结构清晰

后端应返回标准 JSON 格式,例如:

[
  {
    "id": 1001,
    "name": "张三",
    "department": "技术部",
    "date": "2024-06-01",
    "checkIn": "08:52",
    "checkOut": "17:45",
    "status": "正常",
    "lateMinutes": 2,
    "overtimeHours": 0.5
  },
  {
    "id": 1002,
    "name": "李四",
    "department": "人事部",
    "date": "2024-06-01",
    "checkIn": "09:15",
    "checkOut": "18:00",
    "status": "迟到",
    "lateMinutes": 15,
    "overtimeHours": 0
  }
]

前端拿到后,先校验是否为数组、是否有必要字段,避免渲染时报错:

  • 用 Array.isArray(data) 判断是否为有效数组
  • 用 data.length > 0 防止空数据渲染空表头
  • 检查首项是否存在 name、checkIn 等关键字段,再决定列名

2. 动态生成表格 HTML(推荐 innerHTML 或 DOM API)

不建议拼接长字符串,推荐用 document.createElement + appendChild,更安全、易调试:

Java Maven Code Review
Java Maven Code Review

审查Java Maven项目(ZIP压缩包或GitLab仓库URL),检查代码规范、命名、模块边界、可维护性问题以及重复代码。

下载
  • 先创建 table 元素,再依次构建 thead(表头)和 tbody(数据行)
  • 表头字段按业务需要定制,比如显示 “姓名|部门|出勤日期|上班时间|下班时间|状态|迟到(分钟)|加班(小时)”
  • 每行数据用 for...of 遍历,为每个字段创建 td,值做基础转义(如用 textContent 防 XSS)

示例片段:

const table = document.createElement('table');
const thead = table.appendChild(document.createElement('thead'));
const headerRow = thead.insertRow();
['姓名', '部门', '日期', '上班', '下班', '状态', '迟到(分)', '加班(时)'].forEach(text => {
  const th = document.createElement('th');
  th.textContent = text;
  headerRow.appendChild(th);
});

const tbody = table.appendChild(document.createElement('tbody'));
data.forEach(item => {
  const row = tbody.insertRow();
  row.insertCell().textContent = item.name;
  row.insertCell().textContent = item.department;
  row.insertCell().textContent = item.date;
  row.insertCell().textContent = item.checkIn || '-';
  row.insertCell().textContent = item.checkOut || '-';
  row.insertCell().textContent = item.status;
  row.insertCell().textContent = item.lateMinutes || 0;
  row.insertCell().textContent = item.overtimeHours?.toFixed(1) || 0;
});
document.getElementById('attendance-table').appendChild(table);

3. 增强可读性:状态高亮与空值处理

纯文字表格不够直观,加点轻量样式提升体验:

  • 状态为 “迟到”、“缺勤”、“请假” 时,给对应 td 添加 class(如 status-late),CSS 控制颜色
  • 时间字段为空(null 或 "")统一显示为 "–",避免空白格误导
  • 数字字段如 lateMinutes 为 0 时,可显示为空或 “✓”,比 “0” 更友好

4. 后续可扩展点(按需添加)

基础表格跑通后,常见增强方向:

  • 分页:前端用 slice() 切数据,配合页码控制;数据量大时建议后端分页
  • 搜索/筛选:用 filter() 按姓名、部门、日期范围实时过滤数组,重绘 tbody
  • 导出 Excel:用 SheetJS (xlsx) 库,将数据数组直接转工作表,无需后端参与
  • 点击查看详情:给每行绑定 data-id,点击后弹窗加载该员工当日完整打卡记录(含 GPS、设备信息等)

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2303

5

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6070

13

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5406

10

js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

4586

5

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

2023.07.04

1149

3

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

2023.07.04

4504

6

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

900

4

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

1816

5

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

2023.09.04

3285

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.1万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.6万人学习