Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

284
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda