HTML 结构
<div class="tabs"> <div class="tab-header"> <button class="tab-btn active" data-tab="tab1">Tab 1</button> <button class="tab-btn" data-tab="tab2">Tab 2</button> <button class="tab-add">+</button> </div> <div class="tab-content"> <div class="tab-pane active" id="tab1">Content 1</div> <div class="tab-pane" id="tab2">Content 2</div> </div> </div>
CSS 样式
.tab-btn.active { background-color: #ddd; } .tab-pane { display: none; } .tab-pane.active { display: block; }
JavaScript 实现
document.addEventListener('DOMContentLoaded', function() { const tabHeader = document.querySelector('.tab-header'); const tabContent = document.querySelector('.tab-content'); let tabCount = document.querySelectorAll('.tab-btn:not(.tab-add)').length; // 切换 Tab tabHeader.addEventListener('click', function(e) { if (e.target.classList.contains('tab-btn') && !e.target.classList.contains('tab-add')) { document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); document.querySelectorAll('.tab-pane').forEach(pane => pane.classList.remove('active')); e.target.classList.add('active'); const tabId = e.target.getAttribute('data-tab'); document.getElementById(tabId).classList.add('active'); } // 添加新 Tab if (e.target.classList.contains('tab-add')) { tabCount++; const newTabId = `tab${tabCount}`; // 创建新按钮 const newBtn = document.createElement('button'); newBtn.className = 'tab-btn'; newBtn.textContent = `Tab ${tabCount}`; newBtn.setAttribute('data-tab', newTabId); // 创建新内容面板 const newPane = document.createElement('div'); newPane.className = 'tab-pane'; newPane.id = newTabId; newPane.textContent = `Content ${tabCount}`; // 插入元素 e.target.insertAdjacentElement('beforebegin', newBtn); tabContent.appendChild(newPane); // 激活新 Tab document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); document.querySelectorAll('.tab-pane').forEach(pane => pane.classList.remove('active')); newBtn.classList.add('active'); newPane.classList.add('active'); } }); });
基本 Tab 切换 通过给按钮和内容面板添加 active 类来控制显示状态,点击非添加按钮时切换对应内容。
动态添加 Tab 点击 + 按钮时创建新的 Tab 按钮和内容面板,自动递增编号并激活新创建的 Tab。
DOM 操作 使用 insertAdjacentElement 在添加按钮前插入新按钮,使用 appendChild 在内容区域添加新面板。
注意事项 确保每个 Tab 按钮的 data-tab 属性与对应内容面板的 id 匹配,样式可根据实际需求调整。
JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…
实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…
实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…
二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…
使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…
正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…
2026-04-09 08:54:50
2026-04-09 08:51:25
2026-04-09 08:49:47
2026-04-09 08:48:15
2026-04-09 08:45:31