繁体   English   中英

在同一页面上添加多个JavaScript图像滑块

[英]Adding more than one javascript image slider on same page

我想使用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";
}

问题是您一次选择了所有带有document.getElementsByClassName(“ slides”)的幻灯片。

您想要更改JS方法以使用sorrounding元素

<div class="container slider">

然后选择并将它们传递给showSlides形式的controlSlide。 未经测试:

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";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM