JS幻灯片 - 自动播放中断手动转动
JS slideshow - auto-play interrupting manual turn
我刚刚制作了一个简单的幻灯片,它可以自动更改图像,还具有手动选项,因此您可以在需要时前进和后退图像。
问题出在这里:更改图像的自动功能设置为每 3 秒一次。但是,如果您在 2.5 秒后单击更改幻灯片,则幻灯片会更改,但 0.5 秒后自动功能也会更改为下一张幻灯片。
所以我换个方式,自动功能会中断手动更改,在手动更改幻灯片后,有什么方法可以重置自动功能吗?
这里是 html 代码:
<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<title>Chapter 11 - HTML Forms and JavaScript</title>
</head>
<body onload="autoRun()">
<img src="slika1.jpg" id="slideshow" width="700px",
height="350px">
<br/>
<p id="caption">slika1</p>
<a href="#" id="buttonNext">Next Slide</a><br/>
<a href="#" id="buttonPrevious">Previous Slide</a>
<script src="slideshow.js"></script>
</body>
</html>
JS代码:
document.getElementById('buttonNext').onclick=function(){
changeImage(1);
return false;
}
document.getElementById('buttonPrevious').onclick=function(){
changeImage(-1);
return false;
}
var images =["slika1.jpg","slika2.jpg", "slika3.jpg" ];
var caption=["slika1", "slika2", "slika3"];
var imageNumber=0;
var imageLength=images.length -1;
function changeImage(x){
imageNumber+=x;
if(imageNumber > imageLength){
imageNumber = 0;
}
if(imageNumber < 0){
imageNumber = imageLength;
}
document.getElementById('slideshow').src=images[imageNumber];
document.getElementById('caption').innerHTML=caption[imageNumber];
return false;
}
function autoRun(){
setInterval("changeImage(1)", 3000);
}
这很容易做到。
1) 添加一个全局变量var timer;
2) 在 changeImage()
函数的开头添加:autoRun();
3) 将您的 autoRun()
函数更改为:
function autoRun(){
clearTimeout(timer);
timer = setTimeout("changeImage(1)", 3000);
}
这样,每次调用 changeImage()
时都会重置 autorun-timer,无论是因为您手动更改了幻灯片还是 autorun-function。
我刚刚制作了一个简单的幻灯片,它可以自动更改图像,还具有手动选项,因此您可以在需要时前进和后退图像。
问题出在这里:更改图像的自动功能设置为每 3 秒一次。但是,如果您在 2.5 秒后单击更改幻灯片,则幻灯片会更改,但 0.5 秒后自动功能也会更改为下一张幻灯片。
所以我换个方式,自动功能会中断手动更改,在手动更改幻灯片后,有什么方法可以重置自动功能吗?
这里是 html 代码:
<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<title>Chapter 11 - HTML Forms and JavaScript</title>
</head>
<body onload="autoRun()">
<img src="slika1.jpg" id="slideshow" width="700px",
height="350px">
<br/>
<p id="caption">slika1</p>
<a href="#" id="buttonNext">Next Slide</a><br/>
<a href="#" id="buttonPrevious">Previous Slide</a>
<script src="slideshow.js"></script>
</body>
</html>
JS代码:
document.getElementById('buttonNext').onclick=function(){
changeImage(1);
return false;
}
document.getElementById('buttonPrevious').onclick=function(){
changeImage(-1);
return false;
}
var images =["slika1.jpg","slika2.jpg", "slika3.jpg" ];
var caption=["slika1", "slika2", "slika3"];
var imageNumber=0;
var imageLength=images.length -1;
function changeImage(x){
imageNumber+=x;
if(imageNumber > imageLength){
imageNumber = 0;
}
if(imageNumber < 0){
imageNumber = imageLength;
}
document.getElementById('slideshow').src=images[imageNumber];
document.getElementById('caption').innerHTML=caption[imageNumber];
return false;
}
function autoRun(){
setInterval("changeImage(1)", 3000);
}
这很容易做到。
1) 添加一个全局变量var timer;
2) 在 changeImage()
函数的开头添加:autoRun();
3) 将您的 autoRun()
函数更改为:
function autoRun(){
clearTimeout(timer);
timer = setTimeout("changeImage(1)", 3000);
}
这样,每次调用 changeImage()
时都会重置 autorun-timer,无论是因为您手动更改了幻灯片还是 autorun-function。