кнопка переключения мобильного меню не закрывается - PullRequest
1 голос
/ 04 августа 2020

Есть несколько проблем с моим кодом javascript для переключения открытия и закрытия мобильного меню. Приведенный ниже код работает для открытия menu = style.height: 200px, но как только меню открыто, нажатие на кнопку не закрывает строку меню (style.height: 0), как ожидалось.

Anyone есть также некоторые указатели, где я ошибаюсь с моим кодом?

document.getElementById("hamburger").addEventListener("click", toggleNav);

function toggleNav(){
    navSize = document.getElementById("mobilemenu").style.height;
    if (navSize == 200) {
        return close();
    }
    return open();
}
function open() {
        document.getElementById("mobilemenu").style.height = "200px";
}
function close() {
         document.getElementById("mobilemenu").style.height = "0";
}
<div class="menubutton">
  <button id="hamburger" class="hamburger hamburger--collapse" type="button" onclick="toggleNav()">
    <span class="hamburger-box">
      <span class="hamburger-inner"></span>
    </span>
  </button>
</div>

Ответы [ 3 ]

3 голосов
/ 04 августа 2020

Вы проверяете неправильное значение в toggleNav()

Используйте if (navSize == "200px")

0 голосов
/ 04 августа 2020

, вы можете просто сделать это, используя classList.toggle

document.getElementById("hamburger").addEventListener("click", function (e) {
e.preventDefault();
  document.getElementById("mobilemenu").classList.toggle('show');
});
.menubutton {
position: fixed;
top:10px;
left:10px;
z-index: 999;
}
#mobilemenu {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  width: 200px;
  transform: translateX(-100%);
  border-right: 1px solid #ccc;
  background-color: #eee;
  transition: transform .3s ease;
}

#mobilemenu.show {
  transform: translateX(0);
}
<div class="menubutton">
  <button id="hamburger" class="hamburger hamburger--collapse" type="button">
          <span class="hamburger-box">
            <span class="hamburger-inner">Click</span>
          </span>
        </button>
</div>
<div id="mobilemenu"></div>
0 голосов
/ 04 августа 2020

это ошибочный код:

    if (navSize == 200) {
      return close();
    }
    return open();

navSize будет примерно как "200px", а не 200 Поскольку оператор if всегда ложен, он запускается только open()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...