原生web实现不固定列数的表格、随机列、document、querySelector、forEach、hasOwnProperty、call、includes

文章目录

  • 效果图
  • 公共样式
  • 第一种解决方案(不推荐)
  • 第二种解决方案(强烈推荐)


效果图

randomColumnTable


公共样式

.d_f {display: flex;
}.flex_1 {flex: 1;
}.jc_sb {justify-content: space-between;
}.ai_c {align-items: center;
}.bc_ccc {background-color: #cccccc;
}/* ------------padding------------ */
.bs_bb {box-sizing: border-box;
}.p_6 {padding: 6px;
}.p_lr_6 {padding-left: 6px;padding-right: 6px;
}.p_lr_10 {padding-left: 10px;padding-right: 10px;
}/* - */
.ta_c {text-align: center;
}/* ----------- */
.fw_700 {font-weight: 700;
}/* ------------------- */
.b_1s_000 {border: 1px solid #000000;
}.bl_1s_000 {border-left: 1px solid #000000;
}.br_1s_000 {border-right: 1px solid #000000;
}.bt_1s_000 {border-top: 1px solid #000000;
}.bb_1s_000 {border-bottom: 1px solid #000000;
}/* ----------------------- */
.h_68 {height: 68px;
}.lh_68 {line-height: 68px;
}.h_30 {height: 30px;
}.lh_30 {line-height: 30px;
}

第一种解决方案(不推荐)

html

<div><div><h1 class="ta_c">表格1</h1><div class="b_1s_000"><div id="idTableHead" class="d_f jc_sb bc_ccc fw_700"></div><div id="idTableBody"></div></div></div><div><h1 class="ta_c">表格2</h1><div class="b_1s_000"><div id="idTableHead2" class="d_f jc_sb bc_ccc fw_700"></div><div id="idTableBody2"></div></div></div>
</div>

JavaScript

(function init() {// 表格1createTable([{id: 'a1',title: 'ID'},{id: 'b1',title: '标题'},{id: 'c1',title: '昵称'},{id: 'd1',title: '年龄'},{id: 'e1',title: '等级'}], [{id: 'a1',title: '标题1',name: '归零',age: 23,type: '超级管理员'},{id: 'b1',title: '标题2',name: '趴在墙头等红杏',age: 25,type: '协管员'},{id: 'c1',title: '标题3',name: '零壹',age: 20,type: '观察员'}], 'idTableHead', 'idTableBody');// 表格2createTable([{id: 'b1',title: '标题'},{id: 'c1',title: '昵称'},{id: 'd1',title: '年龄'},{id: 'e1',title: '等级'}], [{id: 'a1',title: '标题1',name: '归零',age: 23,type: '超级管理员'},{id: 'b1',title: '标题2',name: '趴在墙头等红杏',age: 25,type: '协管员'},{id: 'c1',title: '标题3',name: '零壹',age: 20,type: '观察员'}], 'idTableHead2', 'idTableBody2', ['id']);
})();/*** 创建表格* @param {array} tableH 表头* @param {array} tableH 表内容* @param {string} idH 表头id* @param {string} idB 表内容id* @param {array} arr 不需要渲染的字段*/
function createTable(tableH, tableB, idH, idB, arr = []) {let idHEL = document.querySelector(`#${idH}`),idBEL = document.querySelector(`#${idB}`),elTableH = '',elTableB = '';tableH.forEach((item, i) => {elTableH += `<div class="flex_1 ta_c h_30 lh_30 ${i !== 0 ? 'bl_1s_000' : ''}">${item.title}</div>`;});idHEL.innerHTML = elTableH;tableB.forEach(item => {let elB = '<div class="d_f jc_sb ai_c bt_1s_000">',i = 0;for (const key in item) {if (Object.hasOwnProperty.call(item, key)) {const val = item[key];if (!arr.includes(key)) {elB += `<div class="flex_1 ta_c h_30 lh_30 ${i !== 0 ? 'bl_1s_000' : ''}">${val}</div>`;i++;}}}elTableB += elB + '</div>';});idBEL.innerHTML = elTableB;
}

第二种解决方案(强烈推荐)

html

<div><div><h1 class="ta_c">表格3</h1><div id="idTable3" class="b_1s_000"></div></div><div><h1 class="ta_c">表格4</h1><div id="idTable4" class="b_1s_000"></div></div>
</div>

JavaScript

(function init() {let tableArr = [{id: 'a1',title: '标题3',name: '零壹',age: 20,type: '观察员'},{id: 'b1',title: '标题2',name: '趴在墙头等红杏',age: 25,type: '协管员'},{id: 'c1',title: '标题1',name: '归零',age: 23,type: '超级管理员'}];// 表格3createTableRandomColumn([{title: '角色',name: 'type'},{title: '昵称',name: 'name'},{title: '年龄',name: 'age'}],tableArr,'idTable3');// 表格4createTableRandomColumn([{title: '编号',name: 'id',textAlignH: 'center',textAlignB: 'center'},{title: '昵称',name: 'name',textAlignH: 'center',textAlignB: 'left'},{title: '年龄',name: 'age',textAlignH: 'center',textAlignB: 'center'},{title: '标题',name: 'title',textAlignH: 'center',textAlignB: 'left'},{title: '角色',name: 'type',textAlignH: 'center',textAlignB: 'center'}],tableArr,'idTable4');
})();/**
* 创建表格,自定义列的顺序
* @param {array} tableTemplate 表格模板,定义表头,列对应的字段
* @param {array} tableBody 表格内容
* @param {string} idBox 表格容器id
*/
function createTableRandomColumn(tableTemplate, tableBody, idBox) {let idBoxEl = document.querySelector(`#${idBox}`),elHead = '<div class="d_f jc_sb bc_ccc fw_700">',elBody = '<div>';tableTemplate.forEach((item, i) => {elHead += `<div class="flex_1 h_30 lh_30 bs_bb p_lr_10 ${i !== 0 ? 'bl_1s_000' : ''}" style="text-align: ${item.textAlignH ? item.textAlignH : 'center'}">${item.title}</div>`;});tableBody.forEach(item => {let elB = '<div class="d_f jc_sb ai_c bt_1s_000">';tableTemplate.forEach((items, i) => {elB += `<div class="flex_1 h_30 lh_30 bs_bb p_lr_10 ${i !== 0 ? 'bl_1s_000' : ''}" style="text-align: ${items.textAlignB ? items.textAlignB : 'center'}">${item[items.name]}</div>`;});elB += '</div>';elBody += elB;});elHead += '</div>';elBody += '</div>';idBoxEl.innerHTML = elHead + elBody;
}

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

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

相关文章

突破边界:文本检测算法的革新与应用前景

突破边界&#xff1a;文本检测算法的革新与应用前景 1.文本检测理论篇&#xff08;文本检测方法介绍&#xff09; 文本检测任务是找出图像或视频中的文字位置。不同于目标检测任务&#xff0c;目标检测不仅要解决定位问题&#xff0c;还要解决目标分类问题。 文本在图像中的…

【操作记录】CLion 中引入 Gurobi 并使用 C++ 编程

文章目录 一、前言二、具体操作2.1 创建项目2.2 修改编译工具2.3 修改 CMakeLists.txt2.4 修改 main.cpp2.5 运行测试 一、前言 虽然C编程大部分人都会选择使用VS&#xff0c;但是作为 IDEA 的长期用户&#xff0c;我还是比较习惯 JetBrains 风格的编译器&#xff0c;所以就选…

华为质量管理:从产品质量到用户体验,Kano模型成为新方向

目录 前言 华为质量管理的四个阶段 基于 IPD 如何做质量管理呢&#xff1f; CSDN相关课程 作者简介 前言 今天继续来谈谈华为流程体系中的质量管理过程。 通常来说质量具体是指产品的质量&#xff0c;也就是产品的使用价值及其属性。 产品再细分的话可以分为三个层次&a…

python 模块openpyxl 读取写入.xlsx文件

Python操作Excel的模块有很多&#xff0c;并且各有优劣&#xff0c;不同模块支持的操作和文件类型也有不同。下面是各个模块的支持情况&#xff1a; xlrd&#xff1a;xlrd 读取.xls文件xlwings&#xff1a;xlwings 读取写入Excel文件xlwt&#xff1a;xlwt 写入.xls文件 一、…

Dubbo源码环境搭建

背景 Dubbo 作为一款微服务框架&#xff0c;最重要的是向用户提供跨进程的 RPC 远程调用能力。如上图所示&#xff0c;Dubbo 的服务消费者&#xff08;Consumer&#xff09;通过一系列的工作将请求发送给服务提供者&#xff08;Provider&#xff09;。 为了实现这样一个目标&a…

内网穿透——搭建私人影音媒体平台

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…

粒子群算法的基本原理和Matlab实现

1.案例背景 1.1 PSO算法介绍 粒子群优化算法(Particle Swarm Optimization,PSO)是计算智能领域,除了蚁群算法,鱼群算法之外的一种群体智能的优化算法,该算法最早是由Kennedy和 Eberhart 在1995年提出的。PSO算法源于对鸟类捕食行为的研究,鸟类捕食时,每只鸟找到食物最简单有效…

【数据结构】 队列(Queue)与队列的模拟实现

文章目录 &#x1f340;队列(Queue)的概念&#x1f38b;队列的使用&#x1f38d;队列的模拟实现&#x1f6a9;创建队列&#x1f6a9;入队列&#x1f6a9;出队列&#x1f6a9;获取队头元素&#x1f6a9;获取队列长度&#x1f6a9;判断是否为空&#x1f6a9;完整代码 &#x1f33…

自带云盘的内网即时通讯软件,保障数据在公司局域网内安全流通

在信息时代&#xff0c;很多对于内部机密性要求较高的企业&#xff0c;都不惜成本地选择在内网搭建专属的私有化即时通讯系统。企业员工在内部通讯与协同办公的时候&#xff0c;会分享一些文件、文档等资料&#xff0c; 为了保证所有在通讯软件流通的文件&#xff0c;就需要选…

CSS基础选择器及常见属性

文章目录 一、CSS1、CSS简介2、CSS语法规范 二、CSS基础选择器1、选择器的作用2、选择器分类3、基础选择器标签选择器类选择器id选择器通配符选择器 三、CSS常见属性1、字体属性字体系列字体大小字体粗细文字样式 2、文本属性文本颜色对齐文本装饰文本文本缩进行间距 四、CSS引…

17.3 【Linux】systemctl 针对 service 类型的配置文件

17.3.1 systemctl 配置文件相关目录简介 服务的管理是通过 systemd&#xff0c;而 systemd 的配置文件大部分放置于/usr/lib/systemd/system/ 目录内。但是 Red Hat 官方文件指出&#xff0c; 该目录的文件主要是原本软件所提供的设置&#xff0c;建议不要修改&#xff01;而要…

5. 线性层及其他层

5.1 神经网络结构 5.2 线性拉平 import torch import torchvision from torch import nn from torch.nn import ReLU from torch.nn import Sigmoid from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriterdataset torchvision.datase…