【问题标题】:Javascript Slideshow with play pause and Next Prev button带有播放暂停和下一个上一个按钮的 Javascript 幻灯片
【发布时间】:2019-05-14 13:22:16
【问题描述】:

我正在用 JavaScript 制作幻灯片,其中包含播放/暂停和下一个/上一个。我已经设法使用播放/暂停按钮进行幻灯片放映,但现在我想向其中添加 Next 和 Prev 按钮。有人可以帮助我如何做到这一点。

这是我的 HTML:

<!DOCTYPE html>
<html lang="en">
<head>
<title>Simple HTML Slideshow</title>

<style type="text/css">
#slideshow { 
    margin: 50px auto; 
    position: relative; 
    width: 900px;
    height: 450px;
    padding: 10px;  
}

#slideshow > div { 
    position: absolute; 
    top: 10px; 
    left: 10px; 
    right: 10px; 
    bottom: 10px; 
}

#slideshow > div > img { 
    width: 100%; 
}
#button { text-align: center; }
</style>
<noscript>
 Sorry...JavaScript is needed to go ahead.
</noscript>
</head>
<body>
<div id="slideshow">
   <div>
     <img name="slide" id="imgSlideshow" src="http://themarklee.com/wp-content/uploads/2013/12/snowying.jpg">
   </div>
</div>

<div id="button">
    <a href="#" id="prevBtn" onclick="showPrev()">Prev</a> 
    <a href="#" id="startCycle" onclick="setTimer()">Play/Pause</a> 
    <a href="#" id="nextBtn" onclick="showNext()">Next</a>
</div>

</body>
</html>

这里是 JavaScript:

<script language="javascript" type="text/javascript">
var i = 0; 
var path = new Array();
//var timer = setInterval("slide()",2000);
var timer;

// LIST OF IMAGES 
path[0] = "http://themarklee.com/wp-content/uploads/2013/12/snowying.jpg"; 
path[1] = "http://themarklee.com/wp-content/uploads/2013/12/starlight.jpg"; 
path[2] = "http://themarklee.com/wp-content/uploads/2013/12/snowstorm.jpg";
path[3] = "http://themarklee.com/wp-content/uploads/2013/12/misty-winter-afternoon.jpg";

function slide() {
    document.getElementById("imgSlideshow").src = path[i];
    i = (i + 1)%path.length;
    //console.log(i);
}

function setTimer(){
    if (timer) {
       // stop 
       clearInterval( timer );
       timer=null;
    }
    else {
       timer = setInterval("slide()",2000);
    }
}

var imgNumber = 1;
var numberOfImg = path.length;

function previousImage() {
  if(imgNumber > 1) {
    imgNumber--;
  }
  else {
    imgNumber = numberOfImg;
  }

  document.getElementById("imgSlideshow").src = path[imgNumber-1];
  changeCounter(imgNumber, numberOfImg);
}

function nextImage(){
  if(imgNumber < numberOfImg){
    imgNumber++
  }
  else{
    imgNumber = 1
  }

  document.getElementById("imgSlideshow").src = path[imgNumber-1];
  changeCounter(imgNumber, numberOfImg);
}

function changeCounter(cur, total) {
    document.getElementById("counter").innerHTML = cur + "/" + total;
}
document.getElementById("counter").innerHTML = 1 + "/" + path.length;
</script>

任何帮助表示赞赏并提前致谢。

【问题讨论】:

  • 在 showNext 中调用 slide() 并且在 showPrev 函数中与 slide 相同,但是 (i-1) 而不是 (i+1)

标签: javascript html slideshow


【解决方案1】:

逻辑上只有很小的变化。

var imgNumber = 0;
var path = ["http://themarklee.com/wp-content/uploads/2013/12/snowying.jpg",
  "http://themarklee.com/wp-content/uploads/2013/12/starlight.jpg",
  "http://themarklee.com/wp-content/uploads/2013/12/snowstorm.jpg",
  "http://themarklee.com/wp-content/uploads/2013/12/misty-winter-afternoon.jpg"
];
var numberOfImg = path.length;
var timer = null;

function slide() {
  imgNumber = (imgNumber + 1) % path.length;
  console.log(imgNumber);
  document.getElementById("imgSlideshow").src = path[imgNumber];
  changeCounter(imgNumber + 1, numberOfImg);
}

function setTimer() {
  if (timer) {
    clearInterval(timer);
    timer = null;
  } else {
    timer = setInterval(slide, 2000);
  }
  return false;
}



function previousImage() {
  --imgNumber;
  if (imgNumber < 0) {
    imgNumber = numberOfImg - 1;
  }
  document.getElementById("imgSlideshow").src = path[imgNumber];
  changeCounter(imgNumber + 1, numberOfImg);
  return false;
}

function nextImage() {
  ++imgNumber;
  if (imgNumber > (numberOfImg - 1)) {
    imgNumber = 0;
  }
  document.getElementById("imgSlideshow").src = path[imgNumber];
  changeCounter(imgNumber + 1, numberOfImg);
  return false;
}

function changeCounter(cur, total) {
  document.getElementById("counter").innerHTML = cur + "/" + total;
}
document.getElementById("counter").innerHTML = 1 + "/" + path.length;
#slideshow {
  margin: 50px auto;
  position: relative;
  width: 900px;
  height: 450px;
  padding: 10px;
}
#slideshow > div {
  position: absolute;
  top: 10px;
  left: 10px;
  right: 10px;
  bottom: 10px;
}
#slideshow > div > img {
  width: 100%;
}
#button {
  text-align: center;
}
<div id="slideshow">
  <div>
    <img name="slide" id="imgSlideshow" src="http://themarklee.com/wp-content/uploads/2013/12/snowying.jpg">
  </div>
</div>
<div id="button">
  <a href="#" id="prevBtn" onclick="return previousImage()">Prev</a>
  <a href="#" id="startCycle" onclick="return setTimer()">Play/Pause</a>
  <a href="#" id="nextBtn" onclick="return nextImage()">Next</a>
</div>
<div id="counter"></div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2011-09-05
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多