Я хочу, чтобы на одной странице было несколько слайдеров изображений с одинаковым именем класса с использованием 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)">❮</a>
<a class = "next" onclick = "controlSlide(1)">❯</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)">❮</a>
<a class = "next" onclick = "controlSlide(1)">❯</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";
}
Почему вы хотите изобретать велосипед? Есть множество скриптов для слайдеров.
Мне нужен только настраиваемый слайдер, 5 разделов на одной странице. для всего раздела должен быть слайдер изображения, это то, что я пытаюсь. Но я изо всех сил пытаюсь запустить определенный дочерний класс родительского класса, щелкнув стрелку ползунка, потому что я использовал один и тот же класс для всех. Я много искал, но не получил ответа.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проблема в том, что вы выбираете сразу все слайды с помощью 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? я не могу его найти.
кастомный слайдер или плагин?