Поскольку результат, возвращаемый getElementsByClassName
, является коллекцией нодлистов, вам необходимо получить отдельный доступ к членам этой коллекции, чтобы назначить обработчик событий. Если на странице было несколько элементов, соответствующих этому className
, приведенный ниже фрагмент кода назначил бы обработчик события click
каждому.
Array.from( document.getElementsByClassName("toggle") ).forEach( bttn=>{
bttn.addEventListener('click',function(e){
this.classList.toggle('change')
});
})
* {
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
}
*, *:before, *:after {
-webkit-box-sizing: inherit;
box-sizing: inherit;
}
body {
background-color: #333945;
}
.navbar {
background-color: #019031;
color: white;
}
.navbar ul {
margin: 0;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: space-evenly;
-ms-flex-pack: space-evenly;
justify-content: space-evenly;
list-style-type: none;
}
.navbar ul a {
font-size: 5vh;
display: block;
color: white;
text-decoration: none;
display: block;
padding: 25px;
}
.navbar ul a:hover {
background-color: #333945;
}
.toggle {
display: inline-block;
cursor: pointer;
}
.toggle .bar1, .toggle .bar2, .toggle .bar3 {
width: 35px;
height: 5px;
background-color: whitesmoke;
margin: 6px 0;
-webkit-transition: 0.4s;
transition: 0.4s;
}
.change {
display: inline-block;
cursor: pointer;
}
.change .bar1 {
-webkit-transform: rotate(-45deg) translate(-9px, 6px);
transform: rotate(-45deg) translate(-9px, 6px);
}
.change .bar2 {
opacity: 0;
}
.change .bar3 {
-webkit-transform: rotate(45deg) translate(-8px, -8px);
transform: rotate(45deg) translate(-8px, -8px);
}
<div class="container">
<div class="navbar">
<ul>
<li class="toggle">
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</li>
<li><a href="#">Home</a></li>
<li><a href="#">Trends</a></li>
<li><a href="#">News</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</div>
Вместо того, чтобы использовать getElementsByClassName
, вы можете получить доступ к отдельному элементу, используя вместо этого querySelector
: например:
document.querySelector('li.toggle').addEventListener('click',function(e){/*as before*/})