Вы должны создать два CSS класса для обработки поведения в вашем скрипте. Вот пример:
sample.html
<div class="dropdown" id="dd1">
Currency
<div class="dropdown-content hidden" id="dc1">
<a href="">Item 1</a>
<a href="">Item 2</a>
<a href="">Item 3</a>
<a href="">Item 4</a>
<a href="">Item 5</a>
</div>
</div>
Обратите внимание, что у контейнеров по умолчанию скрыт класс.
sample.css
.dropdown {
position: relative;
display: inline-block;
border: 1px solid red;
}
.dropdown-content {
position: absolute;
z-index: 1;
}
.hidden {
display: none;
}
.visible {
display: block;
}
Используйте только классы .hidden или .visible для отображения контейнера. Это обеспечивает некоторую масштабируемость в сети, поэтому вы можете стандартизировать это поведение выпадающего меню.
sample.js
changeClass = (id) => {
const element = document.querySelector(`#${id}`);
if (element.classList.contains('hidden'))
swapClasses(element.classList, 'hidden', 'visible');
else
swapClasses(element.classList, 'visible', 'hidden');
};
swapClasses = (list, toRemove, toAdd) => {
list.remove(toRemove);
list.add(toAdd);
}
document.querySelector('#dd1').addEventListener('click', () => {
changeClass('dc1');
});
document.querySelector('#dd2').addEventListener('click', () => {
changeClass('dc2');
});
Надеюсь, это поможет. Любой вопрос или вопрос, пожалуйста, дайте мне знать.