ошибка горизонтального слайдера — более одного горизонтального слайдера с одинаковыми классами с собственным JavaScript , все слайдеры работают вместе, как я могу ее решить

#javascript #html #css #dom

Вопрос:

#ошибка горизонтального слайдера — более одного горизонтального слайдера с одинаковыми классами с собственным JavaScript, все слайдеры работают вместе, как я могу это решить# ##Этот первый горизонтальный слайдер## «‘
/* Объявляет переменные */

     let moveRight = document.querySelectorAll('.move-right');
    let moveLeft = document.querySelectorAll('.move-left');
    let left = document.querySelector('.move-left');
    let right = document.querySelector('.move-right');
    const slides = document.querySelectorAll('.slide');
    let x = 0;

    /* Function to slide Sliders Divs To left when click on arrow with class = ".move- 
  left"*/
    for(let i = 0; i < moveLeft.length; i  ){
     moveLeft.forEach(function(left){
        left.addEventListener('click', function(){

        x  ;
        for (let i = 0; i < slides.length; i  ){
            if(x==0) {slides[i].style.left = "0px";}
            if(x==1) {slides[i].style.left = "-320px";}
            if(x==2) {slides[i].style.left = "-640px";}
            if(x==3) {slides[i].style.left = "-960px";}
            if(x==4) {slides[i].style.left = "-1280px";}
            if(x==5) {slides[i].style.left = "-1600px";}

            if(x>5) {x=5;}
        }
      })});
    }
   /* Function to slide Sliders Divs To Right  when click on arrow with class = ".move- 
  right"*/

    for(let i = 0; i < moveRight.length; i  ){
      moveRight.forEach(function(right){
        right.addEventListener('click', function(){

        x--;
        for (let i = 0; i < slides.length; i  ){
            if(x==0) {slides[i].style.left = "0px";}
            if(x==1) {slides[i].style.left = "-320px";}
            if(x==2) {slides[i].style.left = "-640px";}
            if(x==3) {slides[i].style.left = "-960px";}
            if(x==4) {slides[i].style.left = "-1280px";}

       if(x < 0) {x=0;}

  }
 })});
}
 

»’

Ответ №1:

Вы не добавили HTML-код, но я предполагаю, что у вас есть раздел или тег div, внутри которого у вас есть слайды и кнопки влево/вправо. Вы можете немного изменить свой код, чтобы нацеливать слайды только в контейнере. Таким образом, даже если у вас несколько ползунков, будет работать только тот ползунок, на кнопки которого вы нажимаете.

 left.addEventListener('click', function(event){
    // Assuming the parent div has a class of container
    const container = event.target.closest('.container');
    // Selecting only those slides that are a part of the container where the button has been clicked
    const slides = container.querySelectorAll('.slides');
    // Rest of your logic goes here
});

 

HTML будет выглядеть примерно так

 <div class='container'>
    <div class='slide'>Content here</div>
    <button class='move-left'>Left</button>
    <button class='move-right'>Right</button>
</div>
 

Примечание: Функция closest() не работает в IE, и вам, возможно, придется добавить для нее заполнение, если вы хотите поддерживать IE.