gpt4 book ai didi

javascript - 在同一页面上添加多个 javascript 图像 slider

转载 作者:行者123 更新时间:2023-11-28 00:58:34 24 4
gpt4 key购买 nike

我想使用 JavaScript 在同一页面上使用相同类名的多个图像 slider 。我已经完成了一个图像 slider 。

问题是,当我使用多个图像 slider 时,它无法正常工作。我尝试使用 childNodes 也无法正常工作。我该如何解决这个问题?

而且我正在尝试为该图像 slider 制作滑动动画(左右)。

如果您需要更多解释,请告诉我。

我已经给出了下面的代码;

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 方法来处理周围的元素

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

关于javascript - 在同一页面上添加多个 javascript 图像 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52811499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com