Добавление более одного слайдера изображений javascript на одну страницу

Я хочу, чтобы на одной странице было несколько слайдеров изображений с одинаковым именем класса с использованием JavaScript. Я сделал для одного слайдера изображений.

Проблема заключается в том, что когда я использую более одного слайдера изображений, он не работает должным образом. Я пробовал с childNodes, но он не работает. Как я могу решить эту проблему?

И я также пытаюсь сделать скользящую анимацию (влево и вправо) для этого слайдера изображений.

Если вам нужны дополнительные объяснения, дайте мне знать.

Я привел код ниже;

HTML

<div class = "container slider">
    <div class = "slides">
        <img src = "images-/b3.jpg">
    </div>
    <div class = "slides">
        <img src = "images-/b2.jpg">
    </div>
    <div class = "slides">
        <img src = "images-/b1.jpg">
    </div>
    <a class = "prev" onclick = "controlSlide(-1)">&#10094;</a>
    <a class = "next" onclick = "controlSlide(1)">&#10095;</a> 
</div>  

<div class = "container slider">
    <div class = "slides">
        <img src = "images-/b3.jpg">
    </div>
    <div class = "slides">
        <img src = "images-/b2.jpg">
    </div>
    <div class = "slides">
        <img src = "images-/b1.jpg">
    </div>
    <a class = "prev" onclick = "controlSlide(-1)">&#10094;</a>
    <a class = "next" onclick = "controlSlide(1)">&#10095;</a> 
 </div>

CSS

.slides{
  position: relative;
  display:none;
}
img{
  width: 100%;
  vertical-align:middle;
}
.container  
{ 
  max-width: 100%; 
  position: relative; 
  margin: auto; 
}
.prev, .next {
  cursor: pointer;
  position: absolute;
  top: 50%;
  color: black;
  font-size: 20px;
} 
.prev{
  left: 2%;
  } 
.next{
  right: 2%;
}
.prev:hover, .next:hover {
  background-color: #f1f1f1;
  text-decoration: none;
  color: black;
}

JAVASCRIPT

var slides = document.getElementsByClassName("slides");
var position=[1,-1];
var slideIndex=0;
showSlides();

function showSlides() { 
    controlSlide(position[0]);
    setTimeout(showSlides,3000);
} 

function controlSlide(position) {
    for (i = 0; i < slides.length; i++) {
       slides[i].style.display = "none";  
    }
    slideIndex +=position;
    if (slideIndex>slides.length) {
        slideIndex = 1; 
    }
    else if (slideIndex<=0){
        slideIndex=slides.length; 
    }
    slides[slideIndex-1].style.display= "block";
}

кастомный слайдер или плагин?

Negi Rox 15.10.2018 09:23

Почему вы хотите изобретать велосипед? Есть множество скриптов для слайдеров.

yunzen 15.10.2018 09:29

Мне нужен только настраиваемый слайдер, 5 разделов на одной странице. для всего раздела должен быть слайдер изображения, это то, что я пытаюсь. Но я изо всех сил пытаюсь запустить определенный дочерний класс родительского класса, щелкнув стрелку ползунка, потому что я использовал один и тот же класс для всех. Я много искал, но не получил ответа.

Nisha B 15.10.2018 19:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
500
1

Ответы 1

Проблема в том, что вы выбираете сразу все слайды с помощью document.getElementsByClassName («слайды»).

Вы хотите изменить свои методы JS для работы с окружающим элементом

<div class = "container slider">

а затем выберите и передайте их в controlSlide из формы showSlides. Не испытано:

var sliders = document.getElementsByClassName("slider");
var position=[1,-1];
var slideIndex=0;

sliders.forEach(function(slider){
    showSlides(slider);
})


function showSlides(slider) {
    let slides = slider.childNodes; 
    controlSlide(slides, position[0]);
    setTimeout(showSlides,3000);
} 

function controlSlide(slides, position) {
    for (i = 0; i < slides.length; i++) {
       slides[i].style.display = "none";  
    }
    slideIndex +=position;
    if (slideIndex>slides.length) {
        slideIndex = 1; 
    }
    else if (slideIndex<=0){
        slideIndex=slides.length; 
    }
    slides[slideIndex-1].style.display= "block";
}

Спасибо за ответ, я все еще не понимаю этот код. как здесь будет работать функция foreach? и если я передам childNodes, он рассмотрит все дочерние классы, что означает также использование тега привязки, и если я попробую с консолью для дочерних узлов #text, как этот, один дочерний узел. Что это за #text? я не могу его найти.

Nisha B 15.10.2018 20:24

Другие вопросы по теме