Reputation: 11
The buttons already close when you click it again but I can't figure out how to make it check all the other buttons and remove all "active" classes.
Apologies if its a dumb question but thanks anyways.
const openMenuButton = document.querySelectorAll('[data-modal-target]');
openMenuButton.forEach(button => {
button.addEventListener('click',() => {
const modal = document.querySelector(button.dataset.modalTarget);
swapMenu(modal);
})
});
function swapMenu(modal) {
const menuOpen = modal.classList.contains('menu-active');
if(menuOpen == true) {
modal.classList.remove('menu-active');
} else {
modal.classList.add('menu-active');
};
}
Edit: https://jsfiddle.net/oqjz3fgy/5/ This is what im trying to do. I may have overcomplicated things. I only know basic javascript syntax prior to this.
Upvotes: 1
Views: 125
Reputation: 126
I am sorry if I am wrong or not understand your question. However you can do this.
if your code like this:
<div id = 'modal' or class = 'modal'>
<button class ='menu-active'>click me </button>
.....
.....
</div>
function swapMenu(modal) {
const menuOpen = document.querySelectorAll('#modal button'); // select all active menu
for( let i = 0;i < menuOpen.length;i++){
if(menuOpen[i].classList.contains("menu-active")){
menuOpen[i].classList.remove('menu-active');
}
else{
menuOpen[i].classList.add('menu-active');
}
}
Upvotes: 1