Вы не согласны с использованием объекта style
, вы проверяете и иногда устанавливаете display
непосредственно на dropdown
.
Вы также используете =
вместо ==
для сравнения.=
для назначения , а не для сравнения.
Таким образом, минимальное изменение:
function toggleDropdown(){
var dropdown = document.getElementById('games-dropdown')
// ----------vvvvv
if (dropdown.style.display == "none"){
// ------------------------^^
dropdown.style.display = 'block';
} else {
dropdown.style.display = "none";
// --------^^^^^^
}
}
Однако , я бы не стал использоватьstyle
вообще.Я бы использовал класс, который скрывает элемент, который вы добавляете и удаляете:
.hidden {
display: none;
}
и
function toggleDropdown(){
document.getElementById('games-dropdown').classList.toggle("hidden");
}
Пример:
function toggleDropdown(){
document.getElementById('games-dropdown').classList.toggle("hidden");
}
.hidden {
display: none;
}
<li class="dropdown"><a onclick="toggleDropdown()">GAMES</a></li>
<div id="games-dropdown">
games-dropdown
</div>
Вы также можете сделать свою функцию более универсальной, приняв селектор для элемента, чтобы показать / скрыть:
function toggleDropdown(selector) {
document.querySelector(selector).classList.toggle("hidden");
}
.hidden {
display: none;
}
<ul>
<li class="dropdown"><a onclick="toggleDropdown('#games-dropdown')">GAMES</a></li>
<li class="dropdown"><a onclick="toggleDropdown('#games-dropdown2')">GAMES2</a></li>
</ul>
<div id="games-dropdown">
games-dropdown
</div>
<div id="games-dropdown2">
games-dropdown 2
</div>
Я использовал querySelector
вместо getElementById
, чтобы вы могли использовать другие формы идентификации элемента, но, конечно, используйте getElementById
, еслиВы предпочитаете.