小编典典

一页上的多个幻灯片显示使第一个幻灯片不再起作用

css

首先,我知道在回答不能解决我的问题之前就已经问过这个问题了,所以我想再问一遍:我使用了“
W3school”的幻灯片代码,该代码提供了很好的动画Jquery幻灯片。不幸的是,我的页面上需要多个,第二个页面使第一个页面无法正常工作。甚至在这里找到此解决方案之前,我都尝试过更改不同幻灯片对象的CSS和HTML名称,从而成功地解决了一部分问题(第二个未显示),但是如前所述,第一个问题停止了工作。幻灯片在这里,但是单击箭头不会执行任何操作。我稍微了解问题所在,但无法解决。这是我修改第二个代码的方式:

var slideIndex = 7;
showSlides(slideIndex);

function plusSlides(n) {
    showSlides(slideIndex += n);
}

function currentSlide(n) {
    showSlides(slideIndex = n);
}

function showSlides(n) {
    var i;
    var slides = document.getElementsByClassName("mySlides2");
    var dots = document.getElementsByClassName("dot2");
    if (n > slides.length) {
        slideIndex = 1
    }    
    if (n < 1) {
        slideIndex = slides.length
    }
    for (i = 0; i < slides.length; i++) {
        slides[i].style.display = "none";  
    }
    for (i = 0; i < dots.length; i++) {
        dots[i].className = dots[i].className.replace(" active2", "");
    }
    slides[slideIndex-1].style.display = "block";  
    dots[slideIndex-1].className += " active2";
}

如您所见,我只是为Jquery和CSS中的每种类型的对象添加了“2”。我想我必须给乘以不同的命令起不同的名字,但是怎么做呢?

编辑:这是Jsfiddle中的一个例子,但我不明白为什么第一个连幻灯片都没有,而第二个也不起作用:/它在我的计算机上可以!我忘了在电脑上说,单击第一个幻灯片上的箭头会更改第二个幻灯片上的图片!我用在网上找到的随机图片替换了图片。


阅读 346

收藏
2020-05-16

共1个答案

小编典典

我在这里创建了一个解决方案:

var sliderObjects = [];

createSliderObjects();



function plusDivs(obj, n) {

  var parentDiv = $(obj).parent();

  var matchedDiv;

  $.each(sliderObjects, function(i, item) {

    if ($(parentDiv[0]).attr('id') == $(item).attr('id')) {

      matchedDiv = item;

      return false;

    }

  });

  matchedDiv.slideIndex=matchedDiv.slideIndex+n;

  showDivs(matchedDiv, matchedDiv.slideIndex);

}



function createSliderObjects() {

  var sliderDivs = $('.slider');

  $.each(sliderDivs, function(i, item) {

    var obj = {};

    obj.id = $(item).attr('id');

    obj.divContent = item;

    obj.slideIndex = 1;

    obj.slideContents = $(item).find('.mySlides');

    showDivs(obj, 1);

    sliderObjects.push(obj);

  });

}



function showDivs(divObject, n) {

  debugger;

  var i;

  if (n > divObject.slideContents.length) {

    divObject.slideIndex = 1

  }

  if (n < 1) {

    divObject.slideIndex = divObject.slideContents.length

  }

  for (i = 0; i < divObject.slideContents.length; i++) {

    divObject.slideContents[i].style.display = "none";

  }

  divObject.slideContents[divObject.slideIndex - 1].style.display = "block";

}


<link href="http://www.w3schools.com/lib/w3.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<h2 class="w3-center">Manual Slideshow</h2>



<div class="w3-content w3-display-container slider" id="div1">

  <img class="mySlides" src="https://i.imgur.com/eLarayS.jpg" style="width:100%">

  <img class="mySlides" src="https://i.imgur.com/xpOiMWh.jpg" style="width:100%">

  <img class="mySlides" src="https://i.imgur.com/lgcC8Y5.jpg" style="width:100%">

  <img class="mySlides" src="http://i.imgur.com/ufmiVTQ.jpg" style="width:100%">



  <a class="w3-btn-floating w3-display-left" onclick="plusDivs(this,-1)">&#10094;</a>

  <a class="w3-btn-floating w3-display-right" onclick="plusDivs(this,1)">&#10095;</a>

</div>



<div class="w3-content w3-display-container slider" id="div2">

  <img class="mySlides" src="https://i.imgur.com/eLarayS.jpg" style="width:100%">

  <img class="mySlides" src="https://i.imgur.com/xpOiMWh.jpg" style="width:100%">

  <img class="mySlides" src="https://i.imgur.com/lgcC8Y5.jpg" style="width:100%">

  <img class="mySlides" src="http://i.imgur.com/ufmiVTQ.jpg" style="width:100%">



  <a class="w3-btn-floating w3-display-left" onclick="plusDivs(this, -1)">&#10094;</a>

  <a class="w3-btn-floating w3-display-right" onclick="plusDivs(this, 1)">&#10095;</a>

</div>

您现在可以为带有“ slider”类和唯一ID的滑块添加尽可能多的div。

2020-05-16