You could use querySelectorAll
and than iterate using NodeList.forEach()
function onOpen(){
const els = document.querySelectorAll("#header, #menu, #program");
els.forEach(el => el.style.filter = "blur(5px)");
}
onOpen();
<div id="header">TEST</div>
<div id="menu">TEST</div>
<div id="program">TEST</div>
Or if you want to pollute HTML with an extra class, you could use
function onOpen(){
const els = document.querySelectorAll(".onOpenBlur");
els.forEach(el => el.style.filter = "blur(5px)");
}
onOpen();
<div class="onOpenBlur" id="header">TEST</div>
<div class="onOpenBlur" id="menu">TEST</div>
<div class="onOpenBlur" id="program">TEST</div>
that way, in the future, all you have to do is add the same class to any number of elements, instead of nesting a new ID into JS...
Pick the one that best fits. Or you can even use both: '#header, #menu, .onOpenBlur'
https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach
https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
A slightly different approach
Another idea would be to just add a class to body
and let CSS do the magic:
function toggleOpen(){
document.documentElement.classList.toggle('is-open')
}
toggleOpen();
.is-open .on-open-blur {
filter: blur(5px);
}
<div class="on-open-blur" id="header">TEST</div>
<div class="on-open-blur" id="menu">TEST</div>
<div class="on-open-blur" id="program">TEST</div>