html TAB切换按钮变色、自动生成table--使用函数优化结构

news2024/11/20 23:40:01
<!DOCTYPE html>  
<head>  
<meta charset="UTF-8">  
<title>Dynamic Tabs with Table Data</title>  
<style>  
   /* 简单的样式 */    
   .tab-content {    
    display: none;    
    border: 1px solid #ccc;    
    padding: 1px;    
    margin-top: 0px;    
  }    
  .tab-content.active {    
    display: block;    
  }    
  button {  
        margin-right: 0px; /* 添加一些间隔 */  
        background-color: transparent; /* 初始背景色透明 */  
        border: 1px solid #ccc; /* 明确边框样式和颜色 */
        cursor: pointer; /* 鼠标悬停时显示手指形状 */  
        padding: 5px 10px; /* 增加内边距以便点击 */  
  }  
  .active-tab {    
    background-color: rgb(77, 218, 223); /* 选中时背景色变为蓝色 */  
    color: white; /* 文本颜色变为白色,以便在蓝色背景上可见 */
    border-color: rgb(47, 178, 183); /* 更改边框颜色以匹配背景色 */   
  }    
  table {    
    width: 100%;    
    border-collapse: collapse;    
  }    
  th, td {    
    border: 1px solid #ddd;    
    padding: 8px;    
    text-align: left;    
  }    
  th {    
    background-color: #f2f2f2;    
  }  
</style>  
</head>  
<body>  
<div id="tabs">  
  <!-- 选项卡头部将在这里动态生成 -->  
</div>  
<div id="tab-contents">  
  <!-- 选项卡内容(表格)将在这里动态生成 -->  
</div>  
  
<script>  
// 假设这是从后端获取的数据  
const data = {  
  "datasets": [  
    {  
      "name": "Dataset 1",  
      "data": [  
        { "num1": 1234, "num2": 5678, "status1": "on", "status2": "active" },  
        // 更多数据...  
      ]  
    },  
    {  
      "name": "Dataset 2",  
      "data": [  
        { "num1": 3456, "num2": 7890, "status1": "off", "status2": "inactive" },  
        // 更多数据...  
      ]  
<!DOCTYPE html>  
<html lang="en">  
<head>  
<meta charset="UTF-8">  
<title>Dynamic Tabs with Table Data</title>  
<style>  
    /* 简单的样式 */    
    .tab-content {    
     display: none;    
     border: 1px solid #ccc;    
     padding: 1px;    
     margin-top: 0px;    
   }    
   .tab-content.active {    
     display: block;    
   }    
   button {  
         margin-right: 0px; /* 添加一些间隔 */  
         background-color: transparent; /* 初始背景色透明 */  
         border: 1px solid #ccc; /* 明确边框样式和颜色 */
         cursor: pointer; /* 鼠标悬停时显示手指形状 */  
         padding: 5px 10px; /* 增加内边距以便点击 */  
   }  
   .active-tab {    
     background-color: rgb(77, 218, 223); /* 选中时背景色变为蓝色 */  
     color: white; /* 文本颜色变为白色,以便在蓝色背景上可见 */
     border-color: rgb(47, 178, 183); /* 更改边框颜色以匹配背景色 */   
   }    
   table {    
     width: 100%;    
     border-collapse: collapse;    
   }    
   th, td {    
     border: 1px solid #ddd;    
     padding: 8px;    
     text-align: left;    
   }    
   th {    
     background-color: #f2f2f2;    
   }  
 </style> 
</head>  
<body>  
<div id="tabs"></div>  
<div id="tab-contents"></div>  
  
<script>  
// 假设这是从后端获取的数据  
const data = {  
  "datasets": [  
    {  
      "name": "Dataset 1",  
      "data": [  
        { "num1": 1234, "num2": 5678, "status1": "on", "status2": "active" },  
        // 更多数据...  
      ]  
    },  
    {  
      "name": "Dataset 2",  
      "data": [  
        { "num1": 3456, "num2": 7890, "status1": "off", "status2": "inactive" },  
        // 更多数据...  
      ]  
    }  
  ]  
}; 
  
function toggleTab(button, index) {  
    const allTabs = document.querySelectorAll('#tabs button');  
    allTabs.forEach(tab => tab.classList.remove('active-tab'));  
    button.classList.add('active-tab');  
    showTabContent(index);  
}  
  
function showTabContent(index) {  
    const tabContents = document.querySelectorAll('.tab-content');  
    tabContents.forEach(tabContent => tabContent.classList.remove('active'));  
    tabContents[index].classList.add('active');  
}  
  
function createTable(data) {  
    const table = document.createElement('table');  
    const thead = table.createTHead();  
    const headerRow = thead.insertRow();  
    ['Num1', 'Num2', 'Status1', 'Status2'].forEach(text => {  
        const th = document.createElement('th');  
        th.textContent = text;  
        headerRow.appendChild(th);  
    });  
    const tbody = table.createTBody();  
    data.forEach(item => {  
        const row = tbody.insertRow();  
        ['num1', 'num2', 'status1', 'status2'].forEach(key => {  
            const cell = row.insertCell();  
            cell.textContent = item[key];  
        });  
    });  
    return table;  
}  
  
const tabsDiv = document.getElementById('tabs');  
const tabContentsDiv = document.getElementById('tab-contents');  
  
data.datasets.forEach((dataset, index) => {  
    const tabButton = document.createElement('button');  
    tabButton.textContent = `Tab ${index + 1} (${dataset.name})`;  
    tabButton.onclick = () => toggleTab(tabButton, index);  
    tabsDiv.appendChild(tabButton);  
  
    const tabContent = document.createElement('div');  
    tabContent.className = 'tab-content';  
    const table = createTable(dataset.data);  
    tabContent.appendChild(table);  
    tabContentsDiv.appendChild(tabContent);  
});  
  
// 默认显示第一个选项卡的内容和按钮  
if (data.datasets.length > 0) {  
    const firstTabButton = tabsDiv.querySelector('button');  
    firstTabButton.classList.add('active-tab');  
    const firstTabContent = tabContentsDiv.querySelector('.tab-content');  
    firstTabContent.classList.add('active');  
}  
</script>  
</body>  
</html>

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【专题】2024年中国白酒行业数字化转型研究报告合集PDF分享(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p37755 消费人群趋于年轻化&#xff0c;消费需求迈向健康化&#xff0c;消费场景与渠道走向多元化&#xff0c;这些因素共同驱动企业凭借数据能力来适应市场的变化。从消费市场来看&#xff0c;消费群体、需求、场景及渠道皆展现出与…

怎么制作线上报名表_解锁报名新体验

在这个数字化飞速发展的时代&#xff0c;每一次活动的举办都力求高效、便捷与个性化。线上报名表&#xff0c;作为连接主办方与参与者的桥梁&#xff0c;其重要性不言而喻。它不仅是信息收集的工具&#xff0c;更是品牌形象的展示窗口&#xff0c;能够直接影响参与者对活动的第…

用最新的C++技术,如何实现一个序列化工具库?

在现代C的发展中&#xff0c;新引入的语言特性为高效且易用的序列化和反序列化库的开发提供了强大的支持。我们今天一起来探索如何在现代C特性下写出更简洁、更易维护的序列化工具代码。 现有序列化库的挑战 传统的C序列化库&#xff0c;如Boost.Serialization和Cereal&#…

神经网络(四):UNet语义分割网络

文章目录 一、简介二、网络结构2.1编码器部分2.2解码器部分2.3完整代码 三、实战案例 一、简介 UNet网络是一种用于图像分割的卷积神经网络&#xff0c;其特点是采用了U型网络结构&#xff0c;因此称为UNet。该网络具有编码器和解码器结构&#xff0c;两种结构的功能如下&#…

Redis的数据类型常用命令

目录 前言 String字符串 常见命令 set get mget mset setnx incr incrby decr decyby append Hash哈希 常见命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx List 列表 常见命令 lpush lrange lpushx rpush rpushhx lpop…

postman下载安装和导入导出脚本一键执行

下载和安装 首先&#xff0c;下载并安装PostMan&#xff0c;请访问PostMan的官方下载网址&#xff1a;https://www.getpostman.com/downloads/ 下载所需的安装程序后&#xff0c;直接安装即可 第一次打开会要求登录账号密码&#xff0c;如果没有&#xff0c;直接关闭&#xf…

海报制作哪个软件好?建议试试这5个

2024年过得飞快&#xff0c;转眼间国庆佳节即将到来。 在这个举国欢庆的时刻&#xff0c;无论是商家还是个人&#xff0c;都希望通过海报来传递节日的喜悦和祝福。制作一张吸引人的海报&#xff0c;不仅能提升品牌形象&#xff0c;还能增强节日氛围。 那么&#xff0c;如何快…

【Python报错已解决】TypeError: can only concatenate str (not “int“) to str

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

【Java 问题】基础——Java 概述

Java 概述 1. 什么是 Java ?2. Java 语言有哪些特点3. JVM、JDK 和 JRE 有什么区别&#xff1f;4. 说说什么是跨平台性&#xff1f;原理是什么&#xff1f;5. 什么是字节码&#xff1f;采用字节码的好处是什么&#xff1f;6. 为什么说 Java 语言 "编译与解释并存"?…

汽车行业SAP全球模版导入方案【集团出海部署】

在汽车行业实施SAP系统是一个复杂且具挑战性的项目&#xff0c;涉及多个业务模块和跨部门协作。以下是一个汽车行业SAP实施的导入方案&#xff0c;包括关键步骤、模块选择、最佳实践和注意事项。 1. 项目启动及规划 项目启动 项目发起&#xff1a;确定项目范围、目标和业务需…

Spring源码-ConfigurationClassPostProcessor类解析spring相关注解

ConfigurationClassPostProcessor类的作用 此类是一个后置处理器的类&#xff0c;主要功能是参与BeanFactory的建造&#xff0c;主要功能如下 1、解析加了Configuration的配置类 2、解析ComponentScan扫描的包 3、解析ComponentScans扫描的包 4、解析Import注解 该类在springbo…

【原创教程】如何用西门子1500读写巴鲁夫RFID

实现的功能及应用的场合 通过使用RFID进行对托盘信息工件信息的追踪记忆&#xff0c;方便了解工件的状态内容。适用于流水线等场合。 硬件配置 巴鲁夫RFID 巴鲁夫RFID一套包含&#xff1a;RFID分析单元&#xff0c;RFID数据读写头&#xff0c;RFID数据载体。 ①RFID分析单…

ai写论文哪个平台好?分享4款ai论文写作平台软件

在当前的学术研究和论文写作领域&#xff0c;AI技术的应用已经成为一种趋势。通过智能算法和大数据分析&#xff0c;AI工具能够帮助学者和学生提高写作效率、优化内容结构&#xff0c;并确保论文的原创性和质量。以下是四款备受推荐的AI论文写作平台软件&#xff1a; 1. 千笔-…

Js基础

JS编写位置 将代码编写在html网页script标签 <script>// 弹出alert("test")// 控制台输出日志console.log("hello world")// 向网页输入内容&#xff0c;即往body中写内容document.write("write content")</script> 将代码编写在外部…

原腾讯云AI产品线项目经理李珊受邀为第四届中国项目经理大会演讲嘉宾

全国项目经理专业人士年度盛会 原腾讯云AI产品线项目经理、资深项目管理专家李珊女士受邀为PMO评论主办的全国项目经理专业人士年度盛会——2024第四届中国项目经理大会演讲嘉宾&#xff0c;演讲议题为&#xff1a;AI助力项目经理的决策支持系统。大会将于10月26-27日在北京举办…

生态布局再进一步!拓数派 PieCloudDB Database 与 openEuler 完成兼容互认证

随着信息技术的快速发展&#xff0c;国产化自主创新已成为国家战略的核心部分。拓数派自主研发的云原生虚拟数仓 PieCloudDB 与国产操作系统 openEuler 已完成相互兼容性测试&#xff0c;并获得 openEuler 技术测评证书。 目前&#xff0c;拓数派已成功与华为鲲鹏、麒麟软件、龙…

基于Java+Mysql实现的PC端图书管理系统软件

Library_system 图书管理系统。用Java实现的PC端软件。使用MySql作为DBMS操作本地数据库&#xff0c;用JDBC连接Java和数据库。实现图书管理系统的基本功能 项目介绍 该项目主要实现了图书管理系统几个主要的基本功能&#xff0c;做这小项目是为了简单学习数据库设计、包括E…

系统架构师-面向服务架构(SOA)全解

1、为什么需要SOA架构 1.1 系统集成问题 异构系统整合 例如&#xff0c;一个企业可能同时拥有用 Java 开发的企业资源规划&#xff08;ERP&#xff09;系统、用 C# 开发的客户关系管理&#xff08;CRM&#xff09;系统以及用 Python 开发的数据分析系统。通过 SOA&#xff0…

9月24日笔记

内网信息收集 本机基础信息收集 当通过web渗透或者其他方式活动服务器主机权限之后&#xff0c;需要以该主机作为跳板&#xff0c;对内网环境进行渗透&#xff0c;对于攻陷的第一台主机&#xff0c;其在内网中所处的网络位置、当前登录的用户、该用户有什么样的权限、其操作系…

微信小程序开发第八课

一 公告 1.1 微信小程序端 #js###const api require("../../config/settings.js") Page({data: {noticeList: [{title: 公告标题1,create_time: 2024-04-25,content: 公告内容描述1&#xff0c;公告内容描述1&#xff0c;公告内容描述1。, // 可以根据实际情况添加…