javascript - 单击按钮时如何停止自动滑动?

标签 javascript html

我有一个包含 4 张幻灯片的自动幻灯片。我想知道如何在单击 slider 内的导航按钮时停止自动滑动。或者更好的方法是知道单击了哪个按钮,然后根据单击的幻灯片编号使幻灯片继续播放其他幻灯片。 在我的代码中,无论我是否点击导航按钮,幻灯片都会按顺序继续播放。

/* *** Slide Starts *** */

/* To show first slide */
var slides = document.getElementsByClassName("showSlide");
for (i = 0; i < slides.length; i++)
  slides[i].style.display = "none";
slides[0].style.display = "block";
/* Specific slide */
function showDisappear(n) {
  var i;
  for (i = 0; i < slides.length; i++) {
    slides[i].style.display = "none";
  }
  slides[n].style.display = "block";
}
/* Auto Slide */
var i, k = 0;
var navLinks = document.getElementsByClassName("itemLinks");
autoSlide();

function autoSlide() {
  for (i = 0; i < slides.length; i++) {
    slides[i].style.display = "none";
    navLinks[i].classList.remove("active");
  }
  slides[k].style.display = "block";
  navLinks[k].className += " active";
  if (k == slides.length - 1) {
    k = 0;
  } else {
    k++;
  }
  setTimeout(autoSlide, 5000);
}

/* *** Slide Finish *** */
<div class="slidercontainer clear">
  <div class="showSlide">
    <img class="slideImg" src="http://cdn.wallpapersafari.com/53/22/facp4d.jpg" />
    <span class="slideContent">
            	<h1>Selcen 1</h1>
            	<p>Lorem ipsum dolor sit amet</p>
            </span>
  </div>
  <div class="showSlide">
    <img class="slideImg" src="http://tremendouswallpapers.com/wp-content/uploads/2015/01/Fire-Ice-Fist-1280x720.jpg" />
    <span class="slideContent">
            	<h1>Selcen 2</h1>
            	<p>Lorem ipsum dolor sit amet</p>
            </span>
  </div>
  <div class="showSlide">
    <img class="slideImg" src="https://avante.biz/wp-content/uploads/1280x720-Wallpapers/1280x720-Wallpapers-022.jpg" />
    <span class="slideContent">
            	<h1>Selcen 3</h1>
            	<p>Lorem ipsum dolor sit amet</p>
            </span>
  </div>
  <div class="showSlide">
    <img class="slideImg" src="http://yeemei.mobile9.com/download/media/534/assassinsc_P1F5HimQ.jpg" />
    <span class="slideContent">
            	<h1>Selcen 4</h1>
            	<p>Lorem ipsum dolor sit amet</p>
            </span>
  </div>
  <div id="navLinks">
    <ul>
      <li class="itemLinks" onclick="showDisappear(0)"></li>
      <li class="itemLinks" onclick="showDisappear(1)"></li>
      <li class="itemLinks" onclick="showDisappear(2)"></li>
      <li class="itemLinks" onclick="showDisappear(3)"></li>
    </ul>
  </div>
</div>

最佳答案

/* *** Slide Starts *** */

/* To show first slide */
var slides = document.getElementsByClassName("showSlide");
var button = document.getElementById("btn");
var AUTO_TIMER = '';
for (i = 0; i < slides.length; i++)
  slides[i].style.display = "none";
slides[0].style.display = "block";
/* Specific slide */
function showDisappear(n) {
  var i;
  for (i = 0; i < slides.length; i++) {
    slides[i].style.display = "none";
  }
  slides[n].style.display = "block";
}
/* Auto Slide */
var i, k = 0;
var navLinks = document.getElementsByClassName("itemLinks");
autoSlide();

function autoSlide() {
  for (i = 0; i < slides.length; i++) {
    slides[i].style.display = "none";
    navLinks[i].classList.remove("active");
  }
  slides[k].style.display = "block";
  navLinks[k].className += " active";
  if (k == slides.length - 1) {
    k = 0;
  } else {
    k++;
  }
  AUTO_TIMER = setTimeout(autoSlide, 5000);
}
button.addEventListener('click',()=>{
  clearTimeout(AUTO_TIMER);
});
/* *** Slide Finish *** */
<div class="slidercontainer clear">
  <div class="showSlide">
    <img class="slideImg" src="http://cdn.wallpapersafari.com/53/22/facp4d.jpg" />
    <span class="slideContent">
            	<h1>Selcen 1</h1>
            	<p>Lorem ipsum dolor sit amet</p>
            </span>
  </div>
  <div class="showSlide">
    <img class="slideImg" src="http://tremendouswallpapers.com/wp-content/uploads/2015/01/Fire-Ice-Fist-1280x720.jpg" />
    <span class="slideContent">
            	<h1>Selcen 2</h1>
            	<p>Lorem ipsum dolor sit amet</p>
            </span>
  </div>
  <div class="showSlide">
    <img class="slideImg" src="https://avante.biz/wp-content/uploads/1280x720-Wallpapers/1280x720-Wallpapers-022.jpg" />
    <span class="slideContent">
            	<h1>Selcen 3</h1>
            	<p>Lorem ipsum dolor sit amet</p>
            </span>
  </div>
  <div class="showSlide">
    <img class="slideImg" src="http://yeemei.mobile9.com/download/media/534/assassinsc_P1F5HimQ.jpg" />
    <span class="slideContent">
            	<h1>Selcen 4</h1>
            	<p>Lorem ipsum dolor sit amet</p>
            </span>
  </div>
  <div id="navLinks">
    <ul>
      <li class="itemLinks" onclick="showDisappear(0)"></li>
      <li class="itemLinks" onclick="showDisappear(1)"></li>
      <li class="itemLinks" onclick="showDisappear(2)"></li>
      <li class="itemLinks" onclick="showDisappear(3)"></li>
    </ul>
  </div>
</div>
<button id="btn">button</button>

AUTO_TIMER = setTimeout(autoSlide, 5000);

当按钮被点击时,

button.addEventListener('click',()=>{
  clearTimeout(AUTO_TIMER);
});

关于javascript - 单击按钮时如何停止自动滑动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46379451/

相关文章:

javascript - 是否可以在 A 框架中的另一个 nunjuck 模板文字内创建一个 nunjuck 模板文字?

javascript - angular.bootstrap() - 在不需要 ng-app 或 ng-controller 的情况下引导 Angular 应用程序

javascript - 识别数组中具有与另一个对象数组中的属性不同的属性的对象的最快方法

php - 难以从 JSON 页面获取信息并将其放入 MySQL

css - 如何将div放置在彼此旁边和彼此下方?

javascript - 扩展 KineticJS - 自定义过滤器

javascript - 如何在 EmberJS 模板中访问存储在其他变量中的键中的对象属性的值?

html - 在正文背景上显示的页脚

html - Bootstrap .row 退出

javascript - 如何在引导选择选择器中为选项(下拉菜单)设置固定宽度