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

时间:2018-02-07 00:24:39

标签: 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> 

我不知道如何得到它。我希望有人可以帮助我。我会非常感激!

1 个答案:

答案 0 :(得分:0)

在下面添加。

<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>