html TAB切换按钮变色、自动生成table

server/2024/9/25 11:28:36/
html"><!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>javascript">  
// 假设这是从后端获取的数据  
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" },  // 更多数据...  ]  }  ]  
};  // 动态生成选项卡头部和内容  
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 = () => {  // 移除所有按钮的.active-tab类  const allTabs = document.querySelectorAll('#tabs button');  allTabs.forEach(tab => tab.classList.remove('active-tab'));  // 为当前点击的按钮添加.active-tab类  tabButton.classList.add('active-tab');  // 显示对应的选项卡内容  showTabContent(index);  };  tabsDiv.appendChild(tabButton); const tabContent = document.createElement('div');  tabContent.className = 'tab-content';  // 创建表格  const table = document.createElement('table');  const thead = table.createTHead();  const headerRow = thead.insertRow();  ['Num1', 'Num2', 'Status1', 'Status2'].forEach(text => {  let th = document.createElement('th');  th.textContent = text;  headerRow.appendChild(th);  });  const tbody = table.createTBody();  dataset.data.forEach(item => {  let row = tbody.insertRow();  ['num1', 'num2', 'status1', 'status2'].forEach(key => {  let cell = row.insertCell();  cell.textContent = item[key];  });  });  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');  
}  function showTabContent(index) {  const tabContents = document.querySelectorAll('.tab-content');  tabContents.forEach(tabContent => tabContent.classList.remove('active'));  tabContents[index].classList.add('active');  
}  
</script>  
</body>  
</html>

在这里插入图片描述


http://www.ppmy.cn/server/121805.html

相关文章

rust一些通用编程的概念

rust一些通用编程的概念 官网文档数据类型 - Rust 程序设计语言 中文版 (rustwiki.org) 变量&#xff0c;数据类型&#xff0c;条件判断&#xff0c;循环 变量 rust中变量的可变性是值得注意的 例如: fn main(){let number 1;number 2;println!("the number is {}&quo…

8.进销存系统(基于springboot的进销存系统)

目录 1.系统的受众说明 2.开发技术与环境配置 2.1 SpringBoot框架 2.2 Java语言简介 2.3 MySQL环境配置 2.4 idea介绍 2.5 mysql数据库介绍 2.6 B/S架构 3.系统分析与设计 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3经济可行性 3.4.1 数据库…

【Mysql】Centos 安装 Mysql8.0

官网下载安装包 官网地址&#xff1a;MySQL :: Download MySQL Community Server 查看服务器的名称和版本号 lsb_release -a 查看服务的架构 uname -m 下载对应的版本&#xff0c;这里操作系统选择 Red Hat 就可以了。&#xff08;CentOS 就是将 RHEL 发行的源代码从新编译…

基于STM32F103C8T6单片机的农业环境监测系统设计

本设计是基于STM32F103C8T6单片机的农业环境监测系统&#xff0c;能够完成对作物的生长环境进行信息监测和异常报警&#xff0c;并通过手机APP来实现查看信息和设定阈值的功能。为了实现设计的功能&#xff0c;该系统应该有以下模块&#xff1a;包括STM32单片机模块、水环境PH值…

使用 Puppeteer-Cluster 和代理进行高效网络抓取: 完全指南

文章目录 一、介绍&#xff1f;二、什么是 Puppeteer-Cluster&#xff1f;三、为什么代理在网络抓取中很重要&#xff1f;四、 为什么使用带代理的 Puppeteer-Cluster&#xff1f;五、分步指南&#xff1a; 带代理的 Puppeteer 群集5.1. 步骤 1&#xff1a;安装所需程序库5.2. …

PyTorch VGG16手写数字识别教程

手写数字识别教程&#xff1a;使用PyTorch和VGG16 1. 环境准备 确保你已安装以下库&#xff1a; pip install torch torchvision2. 导入必要的库 import torch import torch.nn as nn import torch.optim as optim import torchvision.transforms as transforms import tor…

uniapp实现触底分页加载

uniapp实现触底分页加载 一、页面结构 假设我们有一个简单的列表页面&#xff0c;包含一个用于展示列表项的<view>和一个用于触发加载更多操作的触底事件的区域。 <template><view><view v-for"item in listData" :key"item.id"&g…

清华大学开源 CogVideoX-5B-I2V 模型,以支持图生视频

CogVideoX 是源于清影的开源视频生成模型。 下表列出了我们在此版本中提供的视频生成模型的相关信息。 Model NameCogVideoX-2BCogVideoX-5BCogVideoX-5B-I2V (This Repository)Model DescriptionEntry-level model, balancing compatibility. Low cost for running and second…