javascript - 使用 anchor 标记切换 block 和不显示

标签 javascript html css

在我的电子应用程序中,我想在不同的屏幕之间切换,因此我需要使用 block 显示和无显示。 我有一个包含 anchor 标签的侧面导航栏,每当我单击其中一个标签时,我希望我的屏幕阻止所有其他屏幕并显示被单击的屏幕。

下面是必需的代码

侧导航栏 -未为其附加 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>

不同的显示

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

最佳答案

这里的问题是 allscreens 变量。

getElementsByClassName返回具有给定类名的元素数组。因此,为了将它们全部设置为 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>

关于javascript - 使用 anchor 标记切换 block 和不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64271226/

相关文章:

javascript - 如何使用javascript向HTML元素添加属性

Javascript - if(变量)检查 'undefined' 失败

JavaScript 计算无法启动/未正确执行

html - 边框图像不显示

html - 在输入文本字段中放置问号提交按钮

javascript - JavaScript 目标中的监听器未执行

javascript - 我希望在默认音频播放器中播放完歌曲后出现模式弹出声音,任何人都可以帮助我编写代码

javascript - javascript改变可见性的元素不可点击

html - 如何将 IFRAME 移动到 DIV 中?

css - Spry 验证文本字段在谷歌浏览器中显示不佳