I'm fairly new to programming and still getting the hang of programming logic. I've wasted a few hours trying to simplify this code but no cigar. Given the fact that the base of programming is to simplify tasks, how could I make the following code shorter?
var card1 = document.getElementById('card1');
var card2 = document.getElementById('card2');
var card3 = document.getElementById('card3');
var card4 = document.getElementById('card4');
// card 1
card1.addEventListener('mouseenter', function(){
card2.classList.add('blur');
card3.classList.add('blur');
card4.classList.add('blur');
})
card1.addEventListener('mouseleave', function(){
card2.classList.remove('blur');
card3.classList.remove('blur');
card4.classList.remove('blur');
})
// card 2
card2.addEventListener('mouseenter', function(){
card1.classList.add('blur');
card3.classList.add('blur');
card4.classList.add('blur');
})
card2.addEventListener('mouseleave', function(){
card1.classList.remove('blur');
card3.classList.remove('blur');
card4.classList.remove('blur');
})
// card 3
card3.addEventListener('mouseenter', function(){
card1.classList.add('blur');
card2.classList.add('blur');
card4.classList.add('blur');
})
card3.addEventListener('mouseleave', function(){
card1.classList.remove('blur');
card2.classList.remove('blur');
card4.classList.remove('blur');
})
// card 4
card4.addEventListener('mouseenter', function(){
card1.classList.add('blur');
card2.classList.add('blur');
card3.classList.add('blur');
})
card4.addEventListener('mouseleave', function(){
card1.classList.remove('blur');
card2.classList.remove('blur');
card3.classList.remove('blur');
})
Thanks in advance, Thiago
EDIT: I was eventually able to come up with something, based on @CertainPerformance's answer, that met my needs:
const cards = document.querySelectorAll('.modalidade__card');
const cardsArray = Array.apply(null, cards);
for (let i = 0; i < cardsArray.length; i++) {
cardsArray[i].addEventListener('mouseenter', (e) => {
for (let c = 0; c < cardsArray.length; c++) {
cardsArray[c].classList.add('blur');
};
e.target.classList.remove('blur');
});
cardsArray[i].addEventListener('mouseleave', (e) => {
for (let c = 0; c < cardsArray.length; c++) {
if (cardsArray[c].classList.contains('blur')) {
cardsArray[c].classList.remove('blur');
};
};
});
};