I have looked through a number of similar questions but can not find a specific example of one that answers in vanilla JS how to add and remove a class to a different elemen
document.addEventListener("DOMContentLoaded", function() {
var faqContainers = document.getElementsByClassName('faq-container');
var faqToggle = document.getElementsByTagName('body')[0];
for (var i = 0; i < faqContainers.length; i++) {
faqContainers[i].addEventListener('click', function() {
if (faqToggle.classList.contains('faq-display')) {
faqToggle.classList.remove('faq-display');
// alert("remove faq display!");
} else {
faqToggle.classList.add('faq-display');
// alert("add faq display!");
}
});
}
});
You need to loop:
[...document.querySelectorAll('.faq-container')]
.forEach(faq => faq.addEventListener('click', () =>
document.querySelector('body').classList.toggle('faq-display')))
NOTE: if you have MANY of these divs, you are better off having one event handler for a parent and test what was clicked.
document.getElementById('faqContainerParent')
.addEventListener('click', e => {
const tgt = e.target;
if (tgt.classList.contains("faq-container") || tgt.closest("div.faq-container")) { // is it the faq-container or one of the decendants
document.querySelector('body').classList.toggle('faq-display')
}
});