Как добавить событие на клик в Toggle Menu?

156
26 февраля 2019, 16:40

Как сделать так, чтобы при клике на пункт меню сработало событие закрытия этого меню?

Событие открытия работает, а закрытие - нет!

function openNav() { 
    document.getElementById("mySidenav").style.width = "250px"; 
} 
 
function closeNav() { 
    document.getElementById("mySidenav").style.width = "0"; 
     
} 
 
function closeNav2() { 
    document.getElementById("about").style.width = "0"; 
}
body { 
    font-family: "Lato", sans-serif; 
} 
 
.sidenav { 
    height: 100%; 
    width: 0; 
    position: fixed; 
    z-index: 1; 
    top: 0; 
    left: 0; 
    background-color: #111; 
    overflow-x: hidden; 
    transition: 0.5s; 
    padding-top: 60px; 
} 
 
.sidenav a { 
    padding: 1px 1px 1px 12px; 
    
    font-size: 21px; 
    color: #818181; 
    display: block; 
   
} 
 
.sidenav a:hover { 
    color: #f1f1f1; 
} 
 
.sidenav .closebtn { 
    position: absolute; 
    top: 0; 
    right: 25px; 
    font-size: 36px; 
    margin-left: 50px; 
} 
 
@media screen and (max-height: 450px) { 
  .sidenav {padding-top: 15px;} 
  .sidenav a {font-size: 18px;} 
}
<head> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
</head> 
 
<body> 
 
<div id="mySidenav" class="sidenav"> 
  <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 
  <a href="#" id="about" onclick="closeNav2()">About</a> 
  <a href="#">Services</a> 
  <a href="#">Clients</a> 
  <a href="#">Contact</a> 
</div> 
 
<h2>Animated Sidenav Example</h2> 
<p>Click on the element below to open the side navigation menu.</p> 
<span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; open</span> 
 
 
</body> 
</html>

Answer 1

ты ширину меняешь пункту меню, а не всему меню.

function openNav() { 
    document.getElementById("mySidenav").style.width = "250px"; 
} 
 
function closeNav() { 
    document.getElementById("mySidenav").style.width = "0"; 
     
} 
 
function closeNav2() { 
    /*document.getElementById("about").style.width = "0";*/ 
    document.getElementById("mySidenav").style.width = "0"; 
}

Answer 2

Почему document.getElementById("about")?

function openNav() { 
  console.log("openNav"); 
  document.getElementById("mySidenav").style.width = "250px"; 
} 
 
function closeNav() { 
  console.log("closeNav"); 
  document.getElementById("mySidenav").style.width = "0"; 
} 
 
function closeNav2() { 
  console.log("closeNav2"); 
  document.getElementById("mySidenav").style.width = "0"; 
}
body { 
    font-family: "Lato", sans-serif; 
} 
 
.sidenav { 
    height: 100%; 
    width: 0; 
    position: fixed; 
    z-index: 1; 
    top: 0; 
    left: 0; 
    background-color: #111; 
    overflow-x: hidden; 
    transition: 0.5s; 
    padding-top: 60px; 
} 
 
.sidenav a { 
    padding: 1px 1px 1px 12px; 
    
    font-size: 21px; 
    color: #818181; 
    display: block; 
   
} 
 
.sidenav a:hover { 
    color: #f1f1f1; 
} 
 
.sidenav .closebtn { 
    position: absolute; 
    top: 0; 
    right: 25px; 
    font-size: 36px; 
    margin-left: 50px; 
} 
 
@media screen and (max-height: 450px) { 
  .sidenav {padding-top: 15px;} 
  .sidenav a {font-size: 18px;} 
}
<div id="mySidenav" class="sidenav"> 
  <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 
  <a href="#" id="about" onclick="closeNav2()">About</a> 
  <a href="#">Services</a> 
  <a href="#">Clients</a> 
  <a href="#">Contact</a> 
</div> 
 
<h2>Animated Sidenav Example</h2> 
<p>Click on the element below to open the side navigation menu.</p> 
<span style="font-size:30px;cursor:pointer" onclick="openNav()">&#9776; open</span>

READ ALSO
IndexOf не находит элемент в массиве

IndexOf не находит элемент в массиве

Добавляю в массив элементы страницы (td), вывожу(consolelog(arr);)(пример):

192
Помогите нарисовать canvas!

Помогите нарисовать canvas!

Просьба помочь нарисовать canvasНеобходимо после сделать анимацию отрисовки этого canvas при скролле

187
Canvas второй цвет, удаление значения из массива

Canvas второй цвет, удаление значения из массива

Есть canvas с кругамиПроблемы в том, что круги мерцают(это из-за удаления объекта из массива), я вроде бы удаляю тот элемент, который надо и на секунду...

192
Две inline клавиатуры. Telegtram bot

Две inline клавиатуры. Telegtram bot

У меня есть две inline клавиатуры если я их последовательно вызываю, то их callback_data путается

177