Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

277
Views
Carousel js. Slider doesn't work.How to make it work correctly?

I think I made a mistake in js code because it doesn't work when I click . There are no actions . What should I change in js code?Thanks. My js code:

const slides = document.querySelector(".slides");
const slidesCount = slides.childElementCount;
console.log(slidesCount)
const nextBtn=document.querySelector(".next-slide");
const prevBtn=document.querySelector(".prev-slide");
const container = document.querySelector('.slider-container')

//Controls
prevBtn.addEventListener('click', () => {
  changeSlide('prev')
})
  
nextBtn.addEventListener('click', () => {
  changeSlide('next')
})
let activeSlideIndex = 0

function changeSlide(direction) {
  if(direction === 'prev') {
    activeSlideIndex++
    if(activeSlideIndex === slidesCount) {
      activeSlideIndex = 0
    }
  } else if(direction === 'next') {
    activeSlideIndex--
    if(activeSlideIndex < 0) {
      activeSlideIndex = slidesCount - 1
    }
  }
}

Here my html code.

            <button class="prev-slide">&#9665;</button>
            <button class="next-slide">&#9655;</button>
      </div>
      <div class="slides">
         <img class="slide"  src="images/picture1.jpg" alt="slide image">
          <img class="slide" src="images/picture2.jpg" alt="slide image">
          <img class="slide" src="images/picture3.jpg" alt="slide image">
        </div>
        

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

I think the only thing missing was the actual rendering. You have to somehow hide or show the active slide. I've done that by adding active class and only showing that (through CSS). Then your changeSlide function does not only calculate the active slide, but also set the class on the appropriate element.

const slides = document.querySelector(".slides");
const slidesCount = slides.childElementCount;
console.log(`Showing ${slidesCount} slides.`)
const nextBtn=document.querySelector(".next-slide");
const prevBtn=document.querySelector(".prev-slide");
const container = document.querySelector('.slider-container')

//Controls
prevBtn.addEventListener('click', () => {
  changeSlide('prev')
})
  
nextBtn.addEventListener('click', () => {
  changeSlide('next')
})
let activeSlideIndex = 0

function changeSlide(direction) {
  if(direction === 'prev') {
    activeSlideIndex++
    if(activeSlideIndex === slidesCount) {
      activeSlideIndex = 0
    }
  } else if(direction === 'next') {
    activeSlideIndex--
    if(activeSlideIndex < 0) {
      activeSlideIndex = slidesCount - 1
    }
  }
  Array.from(slides.children).forEach((slide, idx) => {
    if (idx === activeSlideIndex) {
      slide.classList.add('active');
    } else {
      slide.classList.remove('active');
    }
  }); 
}
.controls {
  margin-bottom: 2em;
}

.slides .slide {
  display: none
}

.slides .slide.active {
  display: block;
}
<section  class="controls">
  <button class="prev-slide">&#9665;</button>
  <button class="next-slide">&#9655;</button>
</section>
      
<div class="slides">
  <img class="slide active"  src="https://via.placeholder.com/450x250" alt="slide image">
  <img class="slide" src="https://loremflickr.com/640/250" alt="slide image">
  <img class="slide" src="https://www.fillmurray.com/640/250" alt="slide image">
</div>
        

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!