javascript - 选项卡菜单 使用选项卡更改多个内容

标签 javascript jquery html css wordpress

我正在尝试通过更改多个 div 来获取选项卡菜单。像那样: enter image description here

更改右侧的内容没问题我发现了很多结果。但是当我点击左侧的按钮时,如何切换标题和下面的下载内容……? 我在互联网上搜索了几个小时来寻找此解决方案,但没有结果。

我从 w3schools 得到了垂直选项卡的这个:

function openCity(evt, cityName) {
    var i, tabcontent, tablinks;
    tabcontent = document.getElementsByClassName("tabcontent");
    for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
    }
    tablinks = document.getElementsByClassName("tablinks");
    for (i = 0; i < tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace(" active", "");
    }
    document.getElementById(cityName).style.display = "block";
    evt.currentTarget.className += " active";

}
// Get the element with id="defaultOpen" and click on it
document.getElementById("defaultOpen").click();			
* {box-sizing: border-box}
body {font-family: "Lato", sans-serif;}
/* Style the tab */
.tab {
    float: left;
    border: 1px solid #ccc;
    background-color: #f1f1f1;
    width: 30%;
    height: 300px;
}
/* Style the buttons inside the tab */
.tab button {
    display: block;
    background-color: inherit;
    color: black;
    padding: 22px 16px;
    width: 100%;
    border: none;
    outline: none;
    text-align: left;
    cursor: pointer;
    transition: 0.3s;
    font-size: 17px;
}
/* Change background color of buttons on hover */
.tab button:hover {
    background-color: #ddd;
}
/* Create an active/current "tab button" class */
.tab button.active {
    background-color: #ccc;
}
/* Style the tab content */
.tabcontent {
    float: left;
    padding: 0px 12px;
    border: 1px solid #ccc;
    width: 70%;
    border-left: none;
    height: 300px;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p>Click on the buttons inside the tabbed menu:</p>
<div class="tab">
  <button class="tablinks" onclick="openCity(event, 'London')" id="defaultOpen">London</button>
  <button class="tablinks" onclick="openCity(event, 'Paris')">Paris</button>
  <button class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</button>
</div>
<div id="London" class="tabcontent">
  <h3>London</h3>
  <p>London is the capital city of England.</p>
</div>
<div id="Paris" class="tabcontent">
  <h3>Paris</h3>
  <p>Paris is the capital of France.</p> 
</div>
<div id="Tokyo" class="tabcontent">
  <h3>Tokyo</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>
<div class="download">
  <h3>DOWNLOAD SOMETHING FOR LONDON</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>
<div class="download">
  <h3>DOWNLOAD SOMETHING FOR PARIS</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>
<div class="download">
  <h3>DOWNLOAD SOMETHING FOR TOKYO</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>
</body>
</html> 

我不知道如何获得它。我真的希望有人能帮助我。我将非常感激!

最佳答案

添加如下。

<div class="download downloadLondon">

var downloads = document.getElementsByClassName("download");
for (i = 0; i < tabcontent.length; i++) {
  if (downloads[i].className.indexOf('download'+cityName) >= 0) {
    downloads[i].style.display = "block";
  }
  else{
    downloads[i].style.display = "none";
  }
}

我认为如果你使用 jQuery 会更容易。

function openCity(evt, cityName) {
    var i, tabcontent, tablinks;
    tabcontent = document.getElementsByClassName("tabcontent");
    for (i = 0; i < tabcontent.length; i++) {
        tabcontent[i].style.display = "none";
    }
    tablinks = document.getElementsByClassName("tablinks");
    for (i = 0; i < tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace(" active", "");
    }
    document.getElementById(cityName).style.display = "block";
    evt.currentTarget.className += " active";

    var downloads = document.getElementsByClassName("download");
    for (i = 0; i < downloads.length; i++) {
      if (downloads[i].className.indexOf('download'+cityName) >= 0) {
        downloads[i].style.display = "block";
      }
      else{
        downloads[i].style.display = "none";
      }
    }

}
// Get the element with id="defaultOpen" and click on it
document.getElementById("defaultOpen").click();			
* {box-sizing: border-box}
body {font-family: "Lato", sans-serif;}
/* Style the tab */
.tab {
    float: left;
    border: 1px solid #ccc;
    background-color: #f1f1f1;
    width: 30%;
    height: 300px;
}
/* Style the buttons inside the tab */
.tab button {
    display: block;
    background-color: inherit;
    color: black;
    padding: 22px 16px;
    width: 100%;
    border: none;
    outline: none;
    text-align: left;
    cursor: pointer;
    transition: 0.3s;
    font-size: 17px;
}
/* Change background color of buttons on hover */
.tab button:hover {
    background-color: #ddd;
}
/* Create an active/current "tab button" class */
.tab button.active {
    background-color: #ccc;
}
/* Style the tab content */
.tabcontent {
    float: left;
    padding: 0px 12px;
    border: 1px solid #ccc;
    width: 70%;
    border-left: none;
    height: 300px;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p>Click on the buttons inside the tabbed menu:</p>
<div class="tab">
  <button class="tablinks" onclick="openCity(event, 'London')" id="defaultOpen">London</button>
  <button class="tablinks" onclick="openCity(event, 'Paris')">Paris</button>
  <button class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</button>
</div>
<div id="London" class="tabcontent">
  <h3>London</h3>
  <p>London is the capital city of England.</p>
</div>
<div id="Paris" class="tabcontent">
  <h3>Paris</h3>
  <p>Paris is the capital of France.</p> 
</div>
<div id="Tokyo" class="tabcontent">
  <h3>Tokyo</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>
<div class="download downloadLondon">
  <h3>DOWNLOAD SOMETHING FOR LONDON</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>
<div class="download downloadParis">
  <h3>DOWNLOAD SOMETHING FOR PARIS</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>
<div class="download downloadTokyo">
  <h3>DOWNLOAD SOMETHING FOR TOKYO</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>
</body>
</html> 

关于javascript - 选项卡菜单 使用选项卡更改多个内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48654106/

相关文章:

javascript - 使用请求在 node.js 中传输图像与发送回调正文

javascript - 无法读取未定义的属性(读取 'digest' ) Angular + ipfs 在 https 上构建

javascript - jquery mobile - loadPage 问题

javascript - jQuery 在页面加载中淡入淡出

javascript - html引用jquery库+外部文件

html - 当我没有指定固定宽度时,div 如何居中?

javascript - Three.js/WebGL - 透明平面将其他平面隐藏在它们后面

javascript - $q.all 对数组中的所有 Promise 返回相同的响应

javascript - 高度为 100% 的主体,背景图像为 : cover to fill enire page not just a viewport - without js if possible

javascript - 为什么从 UpdatePanel 内部打开时弹出窗口不关闭