I'm sorry that I bother in this manner... I think I have a really simple problem, but I can't get a fix for it...
(I'm using vanilla Javascript)
I have multiple image carousels in a page, and I cannot make them work.
I managed to make one carousel to work, but if I insert a second one, it doesn't work.
I tried to give id for each div that represents a carousel id="voucher1" and target them in javascript with
carouselA = carousel('#voucher1')
function carousel(id){
const carouselSlide = document.querySelector(id + '.carousel-slide');
}
but it doesn't work...
This is my HTML
<div class="vouchers">
<span class="voucherstitle">Gutscheine</span>
<div class="voucher" id="voucher1">
<div class="carousel-container">
<button id="prevBtn">←</button>
<button id="nextBtn">→</button>
<div class="carousel-slide">
<img src="images/vouchers/firstvoucher/voucher3.jpg" id="lastclone" alt="">
<img src="images/vouchers/firstvoucher/voucher1.jpeg">
<img src="images/vouchers/firstvoucher/voucher2.jpg">
<img src="images/vouchers/firstvoucher/voucher3.jpg">
<img src="images/vouchers/firstvoucher/voucher1.jpeg" id="firstclone" alt="">
</div>
</div>
</div>
<div class="voucher" id="voucher2">
<div class="carousel-container">
<button id="prevBtn">←</button>
<button id="nextBtn">→</button>
<div class="carousel-slide">
<img src="images/vouchers/firstvoucher/voucher3.jpg" id="lastclone" alt="">
<img src="images/vouchers/firstvoucher/voucher1.jpeg">
<img src="images/vouchers/firstvoucher/voucher2.jpg">
<img src="images/vouchers/firstvoucher/voucher3.jpg">
<img src="images/vouchers/firstvoucher/voucher1.jpeg" id="firstclone" alt="">
</div>
</div>
</div>
</div>
and this is my JavaScript
carousel('#voucher1');
carousel('#voucher2');
function carousel(id){
const carouselSlide = document.querySelector(id + '.carousel-slide');
const carouselImages = document.querySelectorAll(id + '.carousel-slide img')
const prevBtn = document.querySelector(id + '#prevBtn');
const nextBtn = document.querySelector(id + '#nextBtn');
let counter = 1;
let size = carouselImages[0].clientWidth;
carouselSlide.style.transform = 'translateX(' + (-size * counter) + 'px)'
nextBtn.addEventListener('click', () =>{
let size = carouselImages[0].clientWidth;
if(counter<0) return;
carouselSlide.style.transition = "transform 0.4s ease-in-out";
counter++;
carouselSlide.style.transform = 'translateX(' + (-size * counter) + 'px)';
nextBtn.disabled=true;
setTimeout(function(){
nextBtn.disabled=false;
},400)
});
prevBtn.addEventListener('click', () =>{
let size = carouselImages[0].clientWidth;
carouselSlide.style.transition = "transform 0.4s ease-in-out";
counter--;
carouselSlide.style.transform = 'translateX(' + (-size * counter) + 'px)';
prevBtn.disabled=true;
setTimeout(function(){
prevBtn.disabled=false;
},400)
});
carouselSlide.addEventListener('transitionend', () =>{
let size = carouselImages[0].clientWidth;
if(carouselImages[counter].id === 'lastclone'){
carouselSlide.style.transition = "none";
counter = carouselImages.length-2;
carouselSlide.style.transform = 'translateX(' + (-size * counter) + 'px)';
}
if(carouselImages[counter].id === 'firstclone'){
carouselSlide.style.transition = "none";
counter = carouselImages.length - counter;
carouselSlide.style.transform = 'translateX(' + (-size * counter) + 'px)';
}
});
window.addEventListener('resize', function(event) {
let size = carouselImages[0].clientWidth;
carouselSlide.style.transition = "none";
carouselSlide.style.transform = 'translateX(' + (-size * counter) + 'px)';
}, true);
}
I'm one again sorry... Maybe this is a simple problem to fix, but I cannot get a solution for it... Thanks in advance!