使用html+css+layui实现动态表格组件

1、概述

需求,表格第一列指标可配置通过后端api传进来,表格显示数据以及鼠标触摸后气泡弹出层提示信息都是从后端传过来,实现动态表格的组件!!实现效果如下:

接口标准数据格式如下:

{"data": {"date": ["8.20","8.21","8.22","8.23","8.24","8.25","8.26","8.27","8.28","8.29","8.30","8.31"],"hosDays": ["1","2","3","4","5","6","7","8","9","10","11","12"],"maxWidth": "","tableData": {"中心静脉插管": [{"id": "25","show": "","hide": ""},{"id": "26","show": "","hide": ""},{"id": "27","show": "","hide": ""},{"id": "28","show": "","hide": ""},{"id": "29","show": "","hide": ""},{"id": "30","show": "<img style='width:20px;height:20px;' src='/pharmacistws/image/CENTER.jpg'/>","hide": ""},{"id": "31","show": "<img style='width:20px;height:20px;' src='/pharmacistws/image/CENTER.jpg'/>","hide": ""},{"id": "32","show": "","hide": ""},{"id": "33","show": "","hide": ""},{"id": "34","show": "","hide": ""},{"id": "35","show": "","hide": ""},{"id": "36","show": "","hide": ""}],"血常规": [{"id": "49","show": "","hide": ""},{"id": "50","show": "","hide": ""},{"id": "51","show": "","hide": ""},{"id": "52","show": "","hide": ""},{"id": "53","show": "","hide": ""},{"id": "54","show": "<img style='width:20px;height:20px;' src='/pharmacistws/image/BLOOD.jpg'/>","hide": "<div><span style='color:black'>07:00 白细胞 mg <span style='color:red'>10↓</span>  (11~20) </span><br/><span style='color:black'>07:00 血小板 mg 100  (100~300) </span><br/><span style='color:black'>07:00 中性粒细胞 mg <span style='color:red'>10↓</span>  (11~20) </span><br/></div>"},{"id": "55","show": "<img style='width:20px;height:20px;' src='/pharmacistws/image/BLOOD.jpg'/>","hide": "<div><span style='color:black'>07:00 白细胞 mg 12  (11~20) </span><br/><span style='color:black'>07:00 白细胞 mg 20  (11~20) </span><br/><span style='color:black'>07:15 血小板 mg <span style='color:red'>80↓</span>  (100~300) </span><br/><span style='color:black'>07:00 血红蛋白 mg <span style='color:red'>25↑</span>  (11~20) </span><br/><span style='color:black'>07:00 中性粒细胞 mg <span style='color:red'>8↓</span>  (11~20) </span><br/><span style='color:black'>07:00 中性粒细胞 mg 20  (11~20) </span><br/></div>"},{"id": "56","show": "<img style='width:20px;height:20px;' src='/pharmacistws/image/BLOOD.jpg'/>","hide": "<div><span style='color:green'>未见异常</span></div>"},{"id": "57","show": "","hide": ""},{"id": "58","show": "","hide": ""},{"id": "59","show": "","hide": ""},{"id": "60","show": "","hide": ""}]}},"r_code": 1
}

 2、实现代码

js代码

// 渲染表格数据
function renderTable(eleIdName, eleIdName1, eleIdName2,data) {var tableHeader = document.querySelector(eleIdName);var dayNum = document.querySelector(eleIdName1);var tableHide = document.getElementById(eleIdName2);// 渲染列头for (var i = 0; i < data.date.length; i++) {var headerCell = document.createElement('div');headerCell.classList.add('header-cell');headerCell.textContent = data.date[i];tableHeader.appendChild(headerCell);var headerCell1 = document.createElement('div');headerCell1.classList.add('header-cell');headerCell1.textContent = data.hosDays[i];dayNum.appendChild(headerCell1);}// 渲染数据var dataHtml = '';for (var key in data.tableData) {dataHtml += '<div class="table-row">';dataHtml += '<div class="cell">';dataHtml += key;dataHtml += '</div>';for (var i = 0; i < data.tableData[key].length; i++) {dataHtml += '<div class="cell" id="'+data.tableData[key][i].id+'" onmouseover="tableShow('+data.tableData[key][i].id+')" onmouseout="tableCloseTip()">';dataHtml += data.tableData[key][i].show;dataHtml += '</div>';var newElement = document.createElement('div');newElement.id= "hide_"+data.tableData[key][i].id;newElement.innerHTML = data.tableData[key][i].hide;tableHide.appendChild(newElement);}dataHtml += '</div>';}dayNum.insertAdjacentHTML('afterend', dataHtml);
}function tableShow(d) {layui.use(['layer'],function(){var layer = layui.layer;var hide = document.getElementById("hide_"+d);if(hide.innerHTML!=='') {tips = layer.tips(hide.innerHTML, "#"+d, {tips: [1, '#F8F8F8'],area: ['300px','auto'],time: 60000});// $("#layui-layer" + tips).css("position","fixed");}});
}function tableCloseTip () {layui.use(['layer'],function(){var layer = layui.layer;layer.close(tips);});
}

如何使用

                var tableHtml = '            <div style="overflow-x: auto;">\n' +'                <div class="table">\n' +'                    <div class="table-header" id="tableHeader">\n' +'                        <div class="header-cell">日期</div>\n' +'                        <!-- 更多列头 -->\n' +'                    </div>\n' +'                    <div class="table-header" id="inHosDay">\n' +'                        <div class="header-cell">住院日</div>\n' +'                    </div>\n' +'                    <!-- 更多单元格 -->\n' +'                </div>\n' +'                <div id="tableHide" style="display:none">\n' +'\n' +'                </div>\n' +'            </div>'$("#table1").append(tableHtml);renderTable("#tableHeader","#inHosDay",'tableHide',ret.data);

注意需要引用layui组件

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

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

相关文章

自动驾驶---什么是Frenet坐标系?

1 背景 为什么提出Frenet坐标系&#xff1f;Frenet坐标系的提出主要是为了解决自动驾驶系统在路径规划的问题&#xff0c;它基于以下几个原因&#xff1a; 符合人类的驾驶习惯&#xff1a; 人类驾驶员在驾驶过程中&#xff0c;通常不会关心自己距离起点的横向和纵向距离&#x…

TypeError:未绑定方法

TypeError: unbound method 错误通常发生在类方法被调用时&#xff0c;但没有正确绑定到实例。这通常意味着你试图在类本身上调用一个实例方法&#xff0c;或者没有使用正确的方式创建类实例。 1、问题背景 某位开发者在尝试创建一个类似于经典的 Pratt 递归下降解析器时遇到了…

目前国内外AI,尤其大模型发展的一些新进展

目前&#xff0c;国内外在AI大模型发展方面均取得了一系列的新进展。以下是一些关键点和发展路径的对比&#xff1a; 国际进展 技术创新与应用&#xff1a;国际上的大模型通常由大型科技公司如谷歌、微软、Meta等主导&#xff0c;它们利用现有的大模型技术来增强原有的产品和…

vue3+ts封装类似于微信消息的组件

组件代码如下&#xff1a; <template><div:class"[voice-message, { sent: isSent, received: !isSent }]":style"{ backgroundColor: backgroundColor }"click"togglePlayback"><!-- isSent为false在左侧&#xff0c;为true在右…

Google play最新政策更新和重要提醒

我们都知道&#xff0c;谷歌会定期更新其政策&#xff0c;而政策的变更通常对开发者及其团队的要求会更为严格&#xff0c;也会增加应用上架的一些限制条件&#xff0c;以此提高应用在谷歌商店的质量。 一起来看看Google play最近的一些政策更新和需要注意的地方。 新政策要求 …

【C++】简单易懂的vector迭代器

一、迭代器的本质 vector的迭代器本质上就是一个被封装的指针。迭代器的用法和指针的用法十分相似&#xff0c;就是一个像指针的假指针&#xff0c;我们不妨把迭代器看作一个伪指针。 二、迭代器的使用 句式&#xff08;可以看到迭代器和指针很像&#xff09;&#xff1a; …

5-2 检测内存容量

1 使用的是bios 中断&#xff0c; 每次进行检测都会返回一块 内容。并且标志上&#xff0c;这块内存是否可用。 接下来是代码&#xff1a; 首先是构建 一个文件夹&#xff0c; 两个文件。 types.h 的内容。 #ifndef TYPES_H #define TYPES_H// 基本整数类型&#xff0c;下面的…

2024国赛数学建模ABC题思路模型

完整的思路模型请查看文末名片 完整的思路模型请查看文末名片 完整的思路模型请查看文末名片

rust 命令行工具rsup管理前端npm依赖

学习了一年的 rust 了&#xff0c;但是不知道用来做些什么&#xff0c;也没能赋能到工作中&#xff0c;现在前端基建都已经开始全面进入 rust 领域了&#xff0c;rust 的前端生态是越来越好。但是自己奈何水平不够&#xff0c;想贡献点什么&#xff0c;无从下手。 遂想自己捣鼓…

23种设计模式之责任链模式

文章目录 23种设计模式之责任链模式主要角色和结构工作原理简单实现 - 学生成绩打印优点责任链 - 缺点责任链 - 应用场景责任链模式在Spring中的使用 23种设计模式之责任链模式 责任链设计模式是一种行为型设计模式&#xff0c;它允许多个对象依次处理一个请求&#xff0c;直到…

基于SpringBoot的外卖点餐系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootJSP 工具&#xff1a;IDEA/Eclipse、Navicat、Maven、Tomcat 系统展示 首页 用户管理界…

本地使用Docker部署Nexus Maven私有仓库工具结合内网穿透实现远程管理

文章目录 前言1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus 前言 本文主要介绍在Linux中使用Docker来一键部署Nexus Maven私有仓库工具并结合Cpolar内网穿透实现远程访问Nex…

CosyVoice:开源强大的 AI 语音合成工具

在当今科技飞速发展的时代&#xff0c;AI 语音合成技术正逐渐改变着我们的生活。今天&#xff0c;就为大家介绍一款卓越的语音合成工具——CosyVoice。 一、安装步骤 克隆和安装&#xff1a; 克隆仓库&#xff1a;git clone --recursive https://github.com/FunAudioLLM/Cos…

LabVIEW步进电机控制方式

在LabVIEW中控制步进电机可以通过多种方式实现。每种方法都有其独特的优缺点&#xff0c;适用于不同的应用场合。下面详细介绍几种常见的步进电机控制方式&#xff0c;并进行比较。 1. 开环控制&#xff08;Open-Loop Control&#xff09; 特点 通过定期发出脉冲信号来控制步进…

SpringBoot整合Minio及阿里云OSS(配置文件无缝切换)

SpringBoot整合Minio及阿里云OSS 文章目录 SpringBoot整合Minio及阿里云OSS1.Minio安装测试1.Docker安装启动容器 2.创建bucket3.上传文件修改权限 2.SpringBoot整合Minio及阿里云OSS1.公共部分抽取2.Minio配置整合1.添加pom依赖2.添加配置文件3.操作接口实现 3.阿里云OSS配置整…

家政上门小程序系统设计解析

一、系统概述 上门家政系统是一种基于互联网技术的综合性服务平台&#xff0c;该系统利用大数据分析和人工智能算法&#xff0c;实现家政服务资源的有效整合与优化配置&#xff0c;进而达到用户与家政服务提供者之间的精准匹配。编辑&#xff1a;qawsed2466 二、系统功能模块 …

RabbitMQ简介

RabbitMQ简介 MQ 百度百科-MQ MQ&#xff1a;Message Queue 消息队列 # 何为消息队列&#xff1f; 消息&#xff1a;字符串&#xff0c;数字&#xff0c;对象&#xff0c;文件...... 业务中需要用到的数据都可以称为消息 队列&#xff1a;先进先出的数据结构常用来解耦&…

【Python知识宝库】迭代器与生成器:高效处理大数据集

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、迭代器&#xff1a;逐个访问数据的艺术1. 迭代器的定义2. 自定义迭代器3. 迭代器的优势 二、生成器&#xff…

分布式风电电池储能系统

风能作为一种清洁的可再生能源,越来越受到世界各国的*视。但风能随机波动的特点,造成风电出力的频繁波动,使电网的调频、调峰压力加大,成为长期困扰风电并网的主要难题。 我国的弃风限电*次出现于2010年,此后弃风从零星现象快速扩散,2012年的情况*为严*,弃风率达17%。之后随着…

VueSax-解决Vue3报错问题,并支持typescript

以下为坑点 根据官方提示&#xff0c;本人在vue3typescript的项目中添加了vuesax的组件依赖 根据正常的导入依赖思路编写代码&#xff0c;发现typescript一直报 查询vuesax的目录文件发现存在ts文件&#xff0c;于是乎觉得是自己的问题&#xff0c;就查阅gpt与网上资料&#x…