当前位置: 首页 > 面试题库 >

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

谭彦
2023-03-14
问题内容

首先,我知道在回答不能解决我的问题之前就已经问过这个问题了,所以我想再问一遍:我使用了“
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中的一个例子,但我不明白为什么第一个连幻灯片都没有,而第二个也不起作用:/它在我的计算机上可以!我忘了在电脑上说,单击第一个幻灯片上的箭头会更改第二个幻灯片上的图片!我用在网上找到的随机图片替换了图片。


问题答案:

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

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。



 类似资料:
  • 使用幻灯片组件,你需要在 sm.js 和 sm.css 之后额外引入如下两个文件: <link rel="stylesheet" href="//g.alicdn.com/msui/sm/0.6.2/css/sm-extend.min.css"> <script type='text/javascript' src='//g.alicdn.com/msui/sm/0.6.2/js/sm-exte

  • 我的logcat显示: 任何帮助都将不胜感激!谢谢!

  • 在后台扩展工具》幻灯片分类 添加分类标识为"portal_index"的分类,然后在此分类添加幻灯片; cat_name:幻灯片类型名称 cat_idname:幻灯片标示 slide_name:幻灯片名称 slide_pic:幻灯片图片地址 slide_url:幻灯片URL slide_des:幻灯片描述 slide_content:幻灯片内容 <php> $home_slides=sp_get

  • Progress,进度条,用于上传、下载等耗时并且需要显示进度的场景,用户可以随时中断该操作。在mpvue框架中实现这个功能是基于小程序的原生progress 组件,这里主要说一下它percent属性: percent 类型:Float 默认值:无 可选值:0-100 说明:百分比0~100 要实现上传或者下载过程中显示进度的效果,就需要实时修改 percent属性的值,下面示例代码是每隔 20m

  • 幻灯片秀 自动依顺序显示每张图像。 播放幻灯片秀 同时播放音乐与幻灯片秀 使用操作接口 利用PSP™主机的按钮或线控装置进行操作

  • 我想拿一张PowerPoint幻灯片(“源”),并将其插入到另一张已经包含一些内容的PowerPoint幻灯片(“目标”)中,位于源PowerPoint幻灯片中的特定位置。 我已经尝试了几种方法来研究这样做的代码,但是我不断得到将幻灯片合并到PowerPoint演示文稿中的结果,这不是我想要的。我想拿一张现有的幻灯片并将其插入到另一张幻灯片中,就像在现有幻灯片中插入图片一样。 我有另一位同事编写的