JavaScript-选项卡中的选项卡
我在使用JavaScript时遇到了一些困难,特别是在选项卡中有选项卡。我目前有3个主选项卡,每个主选项卡内都有3个子选项卡。问题是,当我从一个子选项卡切换到另一个子选项卡,然后从一个子选项卡切换到另一个主选项卡时,所有其他子选项卡都将关闭,直到我手动打开它们为止 例如,我加载页面时,默认情况下打开主选项卡1-子选项卡1。我从主选项卡1-子选项卡1切换到主选项卡1-子选项卡2,它可以完美地加载,但是如果我从主选项卡1切换到主选项卡2,则所有主选项卡2子选项卡都将关闭,直到我手动打开它们为止 下面您将看到HTML、CSS和JS以及代码片段 HTML JSJavaScript-选项卡中的选项卡,javascript,tabs,Javascript,Tabs,我在使用JavaScript时遇到了一些困难,特别是在选项卡中有选项卡。我目前有3个主选项卡,每个主选项卡内都有3个子选项卡。问题是,当我从一个子选项卡切换到另一个子选项卡,然后从一个子选项卡切换到另一个主选项卡时,所有其他子选项卡都将关闭,直到我手动打开它们为止 例如,我加载页面时,默认情况下打开主选项卡1-子选项卡1。我从主选项卡1-子选项卡1切换到主选项卡1-子选项卡2,它可以完美地加载,但是如果我从主选项卡1切换到主选项卡2,则所有主选项卡2子选项卡都将关闭,直到我手动打开它们为止 下面
边栏标题
边栏内容
本地和主要模板内容
升级模板内容
下班后模板内容
GEMS模板内容
聊天模板内容
本地办公室邮件内容
主要客户邮件内容
快速列表邮件内容
经销商邮寄内容
EDC邮件内容
第三方邮件内容
假期内容
带薪休假内容
病假内容
移位交换内容
我修改了您的代码,使其在调用openTemplate()
时传递选项卡名称,并且只重置与该选项卡关联的子选项卡。现在,一个选项卡内的任何交互都不会对其他选项卡产生任何影响
我只修改了HTML和Javascript,没有修改CSS
文件夹
功能openMenu(evt,菜单){
//声明所有变量
变量i、主要内容、主要链接;
//使用class=“mainContent”获取所有元素并隐藏它们
mainContent=document.getElementsByClassName(“mainContent”);
对于(i=0;i
html,
身体{
身高:100%;
保证金:0;
字体系列:Arial;
颜色:#ffffff;
}
a:主动,
答:林克,
a:悬停,
a:参观了{
文字装饰:无;
颜色:#ffffff;
}
.包装纸{
显示:网格;
网格模板柱:1fr 5fr;
身高:100%;
背景:线性梯度(150度、282533 15%、506367 70%、58675e 95%)
}
.侧边栏{
显示:网格;
网格模板行:0fr自动;
保证金:5px;
填充物:5px;
边框:2个实心#ffffff;
}
.侧边栏标题,
.侧边栏内容{
利润率:10px;
填充:10px;
边框:2个实心#ffffff;
}
梅因先生{
显示:网格;
网格模板行:0fr自动;
保证金:5px;
填充物:5px;
边框:2个实心#ffffff;
}
.main标题{
利润率:10px;
填充:10px;
边框:2个实心#ffffff;
文本对齐:右对齐;
}
.主要内容{
显示:无;
/*
利润率:10px;
填充:10px;
边框:2个实心#ffffff;
*/
文本对齐:右对齐;
}
.mainContent.active{
显示:块;
}
.mainHeaderNav>ul{
显示:内联;
填充:0;
保证金:0;
列表样式类型:无;
}
.mainLinks.active{
边框底部:2个实心#00a2ff;
}
.mainLinks:悬停{
边框底部:2个实心#00a2ff;
}
.模板容器{
显示:网格;
网格模板行:0fr自动;
身高:100%;
}
templateHeaderNav先生{
利润率:10px;
填充:10px;
边框:2个实心#ffffff;
}
.templateHeaderNav>ul{
显示:内联;
填充:0;
保证金:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="styles.css">
<title></title>
</head>
<body>
<div class="wrapper">
<div class="sidebar">
<div class="sidebarHeader">
Sidebar Header
</div>
<div class="sidebarContent">
Sidebar Content
</div>
</div>
<div class="main">
<div class="mainHeader">
<nav class="mainHeaderNav">
<ul><a class="mainLinks active" onclick="openMenu(event, 'template')" href="#">Template</a></a></ul>
<ul><a class="mainLinks" onclick="openMenu(event, 'mails')" href="#">Mails</a></ul>
<ul><a class="mainLinks" onclick="openMenu(event, 'ptos')" href="#">PTOs</a></ul>
</nav>
</div>
<div class="mainContent active" id="template">
<div class="templateContainer">
<div class="templateHeader">
<nav class="templateHeaderNav">
<ul><a class="templateLinks active" onclick="openTemplate(event, 'localmajor')" href="#">Local & Major</a></a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'escalation')" href="#">Escalation</a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'afterhours')" href="#">After Hours</a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'gems')" href="#">GEMS</a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'chat')" href="#">Chat</a></ul>
</nav>
</div>
<div class="templateContent active" id="localmajor">
Local & Major Template Content
</div>
<div class="templateContent" id="escalation">
Escalation Template Content
</div>
<div class="templateContent" id="afterhours">
After Hours Template Content
</div>
<div class="templateContent" id="gems">
GEMS Template Content
</div>
<div class="templateContent" id="chat">
Chat Template Content
</div>
</div>
</div>
<div class="mainContent" id="mails">
<div class="templateContainer">
<div class="templateHeader">
<nav class="templateHeaderNav">
<ul><a class="templateLinks active" onclick="openTemplate(event, 'localoffice')" href="#">Local Office</a></a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'majoraccount')" href="#">Major Account</a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'quicklist')" href="#">Quick List</a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'resellers')" href="#">Resellers</a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'edc')" href="#">EDC</a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, '3rdparty')" href="#">3rd Party</a></ul>
</nav>
</div>
<div class="templateContent active" id="localoffice">
Local Office Mails Content
</div>
<div class="templateContent" id="majoraccount">
Major Account Mails Content
</div>
<div class="templateContent" id="quicklist">
Quick List Mails Content
</div>
<div class="templateContent" id="resellers">
Resellers Mails Content
</div>
<div class="templateContent" id="edc">
EDC Mails Content
</div>
<div class="templateContent" id="3rdparty">
3rd Party Mails Content
</div>
</div>
</div>
<div class="mainContent" id="ptos">
<div class="templateContainer">
<div class="templateHeader">
<nav class="templateHeaderNav">
<ul><a class="templateLinks active" onclick="openTemplate(event, 'vacation')" href="#">Vacation</a></a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'paidleave')" href="#">Paid Leave</a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'sickleave')" href="#">Sick Leave</a></ul>
<ul><a class="templateLinks" onclick="openTemplate(event, 'shiftswap')" href="#">Shift Swap</a></ul>
</nav>
</div>
<div class="templateContent active" id="vacation">
Vacation Content
</div>
<div class="templateContent" id="paidleave">
Paid Leave Content
</div>
<div class="templateContent" id="sickleave">
Sick Leave Content
</div>
<div class="templateContent" id="shiftswap">
Shift Swap Content
</div>
</div>
</div>
</div>
</div>
<script type='text/javascript' src='scripts.js'></script>
</body>
</html>
html, body {
height: 100%;
margin: 0;
font-family: Arial;
color: #ffffff;
}
a:active, a:link, a:hover, a:visited {
text-decoration: none;
color: #ffffff;
}
.wrapper {
display: grid;
grid-template-columns: 1fr 5fr;
height: 100%;
background: linear-gradient(150deg,#282533 15%,#506367 70%,#58675e 95%)
}
.sidebar {
display: grid;
grid-template-rows: 0fr auto;
margin: 5px;
padding: 5px;
border: 2px solid #ffffff;
}
.sidebarHeader, .sidebarContent {
margin: 10px;
padding: 10px;
border: 2px solid #ffffff;
}
.main {
display: grid;
grid-template-rows: 0fr auto;
margin: 5px;
padding: 5px;
border: 2px solid #ffffff;
}
.mainHeader {
margin: 10px;
padding: 10px;
border: 2px solid #ffffff;
text-align: right;
}
.mainContent {
display: none;
/*
margin: 10px;
padding: 10px;
border: 2px solid #ffffff;
*/
text-align: right;
}
.mainContent.active {
display: block;
}
.mainHeaderNav > ul {
display: inline;
padding: 0;
margin: 0;
list-style-type: none;
}
.mainLinks.active {
border-bottom: 2px solid #00a2ff;
}
.mainLinks:hover {
border-bottom: 2px solid #00a2ff;
}
.templateContainer {
display: grid;
grid-template-rows: 0fr auto;
height: 100%;
}
.templateHeaderNav {
margin: 10px;
padding: 10px;
border: 2px solid #ffffff;
}
.templateHeaderNav > ul {
display: inline;
padding: 0;
margin: 0;
list-style-type: none;
}
.templateLinks.active {
border-bottom: 2px solid #00a2ff;
}
.templateLinks:hover {
border-bottom: 2px solid #00a2ff;
}
.templateContent {
display: none;
margin: 10px;
padding: 10px;
border: 2px solid #ffffff;
}
.templateContent.active {
display: block;
}
function openMenu(evt, menu) {
// Declare all variables
var i, mainContent, mainLinks;
// Get all elements with class="mainContent" and hide them
mainContent = document.getElementsByClassName("mainContent");
for (i = 0; i < mainContent.length; i++) {
mainContent[i].style.display = "none";
}
// Get all elements with class="mainLinks" and remove the class "active"
mainLinks = document.getElementsByClassName("mainLinks");
for (i = 0; i < mainLinks.length; i++) {
mainLinks[i].className = mainLinks[i].className.replace(" active", "");
}
// Show the current tab, and add an "active" class to the button that opened the tab
document.getElementById(menu).style.display = "block";
evt.currentTarget.className += " active";
}
function openTemplate(evt, template) {
// Declare all variables
var i, templateContent, templateLinks;
// Get all elements with class="templateContent" and hide them
templateContent = document.getElementsByClassName("templateContent");
for (i = 0; i < templateContent.length; i++) {
templateContent[i].style.display = "none";
}
// Get all elements with class="templateLinks" and remove the class "active"
templateLinks = document.getElementsByClassName("templateLinks");
for (i = 0; i < templateLinks.length; i++) {
templateLinks[i].className = templateLinks[i].className.replace(" active", "");
}
// Show the current tab, and add an "active" class to the button that opened the tab
document.getElementById(template).style.display = "block";
evt.currentTarget.className += " active";
}