当前位置: 首页 > 知识库问答 >
问题:

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

霍书
2023-03-14

我想要多个图像滑块在相同的页面与相同的类名使用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";
}

共有1个答案

尉迟边浩
2023-03-14

问题是您一次选择所有幻灯片,Document.GetElementsByClassName(“幻灯片”)。

您希望修改JS方法以使用sorrounding元素

<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";
}
 类似资料:
  • 我在页面上有大约18张图片,我试图在点击图片后以一种模式显示更大的图片,但每次它只显示第一张图片。 我已经尝试过使用,我在孩子们身上尝试过,我也尝试过将图像设置为不同的ID,并将它们设置为变量。 我目前的尝试是将小图像的路径设置为与大图像的路径相同的id,然后使用查找。我现在只“设置”了前两个图像,因为我还不能让它正常工作。 顺便说一句,我已经尝试了其他放大和弹出窗口和插件的方法,但没有成功,这是

  • 使用matplotlib时,我可以使用{importmatplotlib.pyplotas plt}因为我使用Tkinter,所以我也会使用PicreCanvasTkAgg来做同样的事情 有人能帮我在如何实现matplotlib的停顿效果在菲格勒CanvasTkAgg。

  • 我使用spring boot并尝试加载图像到我的html页面。 文件的完整路径:file:///d:/dyplom%20project/src/main/resources/static/slove.png当我在浏览器中运行时,所有工作和图像都在上传。 而当我转到localhost-welcomepage时,我有它: 控制台错误: 这与路径错误

  • 我用缩略图创建了一个小图像库。每次我将鼠标悬停在给定的颜色上,主窗口中的图像就会变成具有这种颜色的图像(实际上,我希望彩色图像被替换为我放在那里的图像的不同颜色变化)。 我想做的是在我的页面上放不止一个这样的图库。问题是,如果我添加另一个库,所有内容都会重复。我希望避免为每个库创建css和jquery代码。有什么办法可以做到这一点吗? 此外,最初我希望大图像仅在单击彩色缩略图时显示,而不是悬停在上

  • 在jQuery图像滑块中添加暂停按钮的最佳方法?我想添加暂停点击橙色方形形状按钮,这是作为一个计时器在我的图像滑块。 这里是我尝试的链接。 http://jsfidle.net/qnzdx/4/ 为了更好地理解我正在添加参考站点,在这里我们可以找到暂停功能点击橙色方形形状。https://store.sap.com/sap/cpa/repository/store/sapstore/us/defa

  • 问题内容: 我正在从事的项目需要在客户的网页上使用jQuery。客户将插入我们将提供的代码块,其中包括一些在-created 中构建窗口小部件的元素。如果他们还没有使用最新版本的jQuery,则还可能(最有可能)包含Google托管版本的jQuery。 问题在于某些客户可能已经安装了旧版本的jQuery。尽管如果它至少是一个相当新的版本可能会起作用,但是我们的代码确实依赖jQuery库中最近引入的