javascript - 导航开关无法正常工作

标签 javascript html css

我有这段代码,点击这个银色 block 应该切换导航栏。它确实触发一次并且不会第二次尝试将导航栏切换回来。我假设这段代码有一些小错误,但我找不到什么。

这是代码。

function toggleNav() {
  var navStatus = true;
  if (navStatus == true) {
    document.getElementById("closenav").style.left = "-300px";
    navStatus = false;
  } else if (navStatus == false) {
    document.getElementById("closenav").style.left = "0px";
    navStatus = true;
  }
}
nav {
  position: fixed;
  top: 0px;
  left: 0px;
  bottom: 0px;
  width: 300px;
  background-color: #272727;
  transition: all ease-in-out 200ms;
}

nav div {
  position: fixed;
  top: 40px;
  left: 40px;
  width: 60px;
  height: 60px;
  background-color: silver;
}
<nav id="closenav">
  <div onclick="toggleNav()"> </div>
</nav>

最佳答案

您需要在 toggleNav() 函数之外定义您的变量 var navStatus = true 否则您的变量 navStatus 值将始终为 true 每次点击都在您的函数的第一行声明...也只需使用 else 而不是 else if

var navStatus = true;
function toggleNav() {
  if (navStatus == true) {
    document.getElementById("closenav").style.left = "-300px";
    navStatus = false;
  } else {
    document.getElementById("closenav").style.left = "0px";
    navStatus = true;
  }
}
nav {
  position: fixed;
  top: 0px;
  left: 0px;
  bottom: 0px;
  width: 300px;
  background-color: #272727;
  transition: all ease-in-out 200ms;
}

nav div {
  position: fixed;
  top: 40px;
  left: 40px;
  width: 60px;
  height: 60px;
  background-color: silver;
}
<nav id="closenav">
  <div onclick="toggleNav()"> </div>
</nav>

关于javascript - 导航开关无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49326771/

相关文章:

javascript - 通过一个小例子了解 JavaScript 闭包

javascript - FreeCodeCamp 的“奇数斐波那契数之和”任务是否有递归版本?

javascript - Chart.js v2 - 组合堆叠条形图和 2 个非堆叠线

javascript - jQuery,单选按钮的动态名称更改

javascript - 下拉列表触发jquery?

html - 链接到由 IMG 标签嵌入的 SVG 中的 CSS

html - 链接到页面中的框

css - 如何在 ngb-datepicker - Angular 中更改特定日期单元格的背景

html - 为什么 flex 元素不缩小过去的内容大小?

javascript - 使用 javascript(或 jQuery)选择和操作 CSS 伪元素,例如::before 和::after