I am trying to create a product card where, when you hover over the card, it will show thumbnails of images that if you hover on the thumbnail, the main image changes to the image of the thumbnail. I have managed to get this done but my challenge now comes in when I have other cards with similar attributes (considering that it is an e-commerce site). Whenever I hover over a thumbnail, both cards react instead of the card I am hovering over. How can I have it that when I hover over a specific thumbnail, in a specific card, it only changes the main image of that card?
HTML code
<div class="display-area">
<div class="row">
<div class="col-lg-2 col-md-2">
<a href="">
<div class="product">
<div class="image-area">
<button class="fav"><i class="far fa-heart"></i></button>
<button class="quick-view"><span>Quick View</span><i class="fa fa-eye"
aria-hidden="true"></i>
</button>
<button class="compare"><i class="fas fa-balance-scale"></i></button>
<img src="./assets/images/ladies.jpg" alt="" class="main-img">
<div class="img-thumb thumb-1 active">
<img src="./assets/images/ladies.jpg" alt="">
</div>
<div class="img-thumb thumb-2">
<img src="./assets/images/men.jpg" alt="">
</div>
<div class="img-thumb thumb-3">
<img src="./assets/images/ladies.jpg" alt="">
</div>
</div>
<div class="details">
<div class="ratings">
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
</div>
<div class="shop">
The DMs
</div>
<div class="product-name">
Oversized Cottom Blouse
</div>
<div class="price">
P 250.00
</div>
</div>
</div>
</a>
</div>
<div class="col-lg-2 col-md-2">
<a href="">
<div class="product">
<span class="new-tag">New</span>
<div class="image-area">
<button class="fav"><i class="far fa-heart"></i></button>
<button class="quick-view"><span>Quick View</span><i class="fa fa-eye"
aria-hidden="true"></i>
</button>
<button class="compare"><i class="fas fa-balance-scale"></i></button>
<img src="./assets/images/ladies.jpg" alt="" class="main-img">
<div class="img-thumb thumb-1 active">
<img src="./assets/images/ladies.jpg" alt="">
</div>
<div class="img-thumb thumb-2">
<img src="./assets/images/men.jpg" alt="">
</div>
<div class="img-thumb thumb-3">
<img src="./assets/images/ladies.jpg" alt="">
</div>
</div>
<div class="details">
<div class="ratings">
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
<i class="fa fa-star" aria-hidden="true"></i>
</div>
<div class="shop">
The DMs
</div>
<div class="product-name">
Oversized Cottom Blouse
</div>
<div class="price">
P 250.00
</div>
</div>
</div>
</a>
</div>
</div>
</div>
JS code
/* product hover */
const thumbs = document.querySelectorAll('.img-thumb');
const mainImg = document.querySelectorAll('.main-img');
thumbs.forEach(function(thumb) {
thumb.addEventListener('mouseover', function() {
for (let img = 0; img < mainImg.length; img++) {
mainImg.forEach(function(image) {
image.src = thumb.children[0].src;
});
}
for (let i = 0; i < thumbs.length; i++) {
thumbs[i].classList.remove("active");
}
thumb.classList.add("active");
});
});