简体   繁体   English

使用锚标记切换块和不显示

[英]Toggle block and none display using an anchor tag

In my electron app I want to toggle between different screens, thus I need to use block and none displays.在我的电子应用程序中,我想在不同的屏幕之间切换,因此我需要使用块和无显示。 I have a side navbar which contain the anchor tags, whenever I click one of those I want my screen to block all the other screens and display the one which was clicked.我有一个包含锚标记的侧面导航栏,每当我单击其中一个时,我希望我的屏幕阻止所有其他屏幕并显示被单击的那个。

Required Code Below下面的必填代码

Side NavBar - not attaching the css for it侧导航栏-不为它附加 css

<div class="sidebar">
  <a href="#home" class="nava" id="homebtn" onclick="showhome()">Home</a>
  <a href="#tasks" class="nava" id="taskbtn" onclick="showtasks()">Tasks</a>
  <a href="#contact" class="nava">TimeTable</a>
  <a href="#about" class="nava">Quick notes</a>
  <a href="#about" class="nava">Expenses</a>
</div>

Different Displays不同的显示

<div id="home" class="screen" style="display: none">
  <h1 class="centertitle">Home</h1>
</div>


<div id="tasks" class="screen" style="display: none">
  <h1 class="centertitle">Tasks</h1>
</div>

Script脚本

<script>
  function showtasks() {
    let task = document.getElementById("tasks");
    let taskbtn = document.getElementById("taskbtn");
    let allnav = document.getElementsByClassName("nava");
    let allscreens = document.getElementsByClassName("screen");
    allscreens.style.display = "none";
    task.style.display = "block";
    allnav.className = "";
    taskbtn.className = "active";
  }

  function showhome() {
    let home = document.getElementById("home");
    let homebtn = document.getElementById("homebtn");
    let allnav = document.getElementsByClassName("nava");
    let allscreens = document.getElementsByClassName("screen");
    allscreens.style.display = "none";
    home.style.display = "block";
    allnav.className = "";
    homebtn.className = "active";
  }
</script>

The problem here is the allscreens variable.这里的问题是 allscreens 变量。

getElementsByClassName returns an array of elements with the given class name. getElementsByClassName返回具有给定类名的元素数组。 So in order to set them all to display: none , you will need to loop through the elements.因此,为了将它们全部设置为display: none ,您需要遍历元素。

let allscreens = document.getElementsByClassName("screen");
for (var i = 0; i < allscreens.length; i++) {
  allscreens[i].style.display = "none";
}

 function showtasks() { let task = document.getElementById("tasks"); let taskbtn = document.getElementById("taskbtn"); let allnav = document.getElementsByClassName("nava"); let allscreens = document.getElementsByClassName("screen"); for (var i = 0; i < allscreens.length; i++ ) { allscreens[i].style.display = "none"; } task.style.display = "block"; allnav.className = ""; taskbtn.className = "active"; } function showhome() { let home = document.getElementById("home"); let homebtn = document.getElementById("homebtn"); let allnav = document.getElementsByClassName("nava"); let allscreens = document.getElementsByClassName("screen"); for (var i = 0; i < allscreens.length; i++ ) { allscreens[i].style.display = "none"; } home.style.display = "block"; allnav.className = ""; homebtn.className = "active"; }
 <div class="sidebar"> <a href="#home" class="nava" id="homebtn" onclick="showhome()">Home</a> <a href="#tasks" class="nava" id="taskbtn" onclick="showtasks()">Tasks</a> <a href="#contact" class="nava">TimeTable</a> <a href="#about" class="nava">Quick notes</a> <a href="#about" class="nava">Expenses</a> </div> <div id="home" class="screen" style="display: none"> <h1 class="centertitle">Home</h1> </div> <div id="tasks" class="screen" style="display: none"> <h1 class="centertitle">Tasks</h1> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM