Я пытаюсь JS без jQuery. Но пока это намного сложнее.
Я пытаюсь включить функцию включения и выключения.
Это функция:
function toggleDropdown(){
var dropdown = document.getElementById('games-dropdown')
if (dropdown.display = "none"){
dropdown.style.display = 'block';
} else {
dropdown.display = "none";
}
}
Я вызываю функцию здесь:
<li class="dropdown"><a onclick="toggleDropdown()">GAMES</a></li>
Вы не согласны с использованием объекта 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
если вы предпочитаете.
Вы можете использовать функцию classList.toggle
. Когда класс виден, вы можете показать тег, если не можете скрыть его.
var dropdown = document.getElementById('games-dropdown').classList.toggle('someClass')
Вы назначаете значение, а не сравниваете значение с элементом стиля
<div id='games-dropdown'> Your Dropdown </div>
<li class="dropdown"><a onClick="toggleDropdown()">GAMES</a></li>
<script>
function toggleDropdown(){
var dropdown = document.getElementById('games-dropdown')
if (dropdown.style.display == "none"){
dropdown.style.display = 'block';
} else {
dropdown.style.display = "none";
}
}
</script>
dropdown.classList.toggle("enabled")