If you need to do this on multiple pairs of divs (using class of course) that do not have a common parent element - without changing your HTML
document.querySelectorAll('.DIV1').forEach(d1 => {
const d2 = d1.parentElement.querySelector('.DIV1 ~ .DIV2');
if (d2) {
d2.addEventListener('mouseover', () => d1.classList.add('phover'));
d2.addEventListener('mouseout', () => d1.classList.remove('phover'));
}
});
.phover {
background-color: black;
color: white;
}
.DIV2 {
cursor: default;
}
<div>
<div class="DIV1">ONE</div>
<div class="DIV2">TWO</div>
</div>
<div>
<div class="DIV1">ONE</div>
<div class="DIV2">TWO</div>
</div>
<div>
<div class="DIV1">ONE</div>
<div class="DIV2">TWO</div>
</div>
<div>
If you want to do it on multiple pairs of divs with the same parent element - without changing your HTML
document.querySelectorAll('.DIV1').forEach(d1 => {
for (let d2 = d1.nextElementSibling; d2; d2 = d2.nextElementSibling) {
if (d2.classList.contains('DIV2')) {
d2.addEventListener('mouseover', () => d1.classList.add('phover'));
d2.addEventListener('mouseout', () => d1.classList.remove('phover'));
break;
}
}
});
.phover {
background-color: black;
color:white;
}
.DIV2 {
cursor:default;
}
<div class="DIV1">ONE</div>
<div class="DIV2">TWO</div>
<div class="DIV1">ONE</div>
<div class="DIV2">TWO</div>
<div class="DIV1">ONE</div>
<div class="DIV2">TWO</div>
Multiple pairs of DIVS, change the HTML
document.querySelectorAll('.DIV2').forEach(d2 => {
const d1 = document.querySelector(d2.dataset.for);
if (d1) {
d2.addEventListener('mouseover', () => d1.classList.add('phover'));
d2.addEventListener('mouseout', () => d1.classList.remove('phover'));
}
});
.phover {
background-color: black;
color: white;
}
.DIV2 {
cursor: default;
}
<div id="d1" class="DIV1">ONE</div>
<div class="DIV2" data-for="#d1">TWO</div>
<div id="d2" class="DIV1">ONE</div>
<div class="DIV2" data-for="#d2">TWO</div>
<div id="d3" class="DIV1">ONE</div>
<div class="DIV2" data-for="#d3">TWO</div>