我有一个在页面打开时自动加载的功能。我希望函数在" onclick"之后停止运行。我希望幻灯片显示在单击按钮后自动停止运行。
<html>
<head>
<script type="text/javascript">
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(){
//This function simply makes the slideshow change slides every 5 seconds.
setInterval("changeImage(1)", 5000);
}
function clearFunction(){
//This function needs to stop the autoRun function.
//If the user wants to manual flip through the slides,
//I don't want the slides to continue changing automatically
}
</script>
</head>
<body onload="autoRun()">
<a href="#" onclick="changeImage(-1); clearFunction();">Previous Slide</a>
<a href="#" onclick="changeImage(1); clearFunction();">Next Slide</a>
</body>
</html>
答案 0 :(得分:1)
可以清除间隔时间:
var interval;
function autoRun(){
//This function simply makes the slideshow change slides every 5 seconds.
interval=setInterval(changeImage, 5000,1);
}
function clearFunction(){
if(interval) clearInterval(interval);
}
答案 1 :(得分:0)
您可以将autoRun()
中的所有代码放在if(flag)
内,其中flag
是最初设置为true
的布尔值,然后您可以设置flag=false
在clearFunction()
内,所以每当调用clearFunction()
时,flag
都会设置为false
而autorun()
内的代码将无法执行,因为它无法通过if(flag)
检查。
请注意,flag
必须是全局变量。
答案 2 :(得分:0)
您可以创建一个每隔5000毫秒调用autoRun
的窗口间隔。
// anywhere in your script, outside of any function
let timer = window.setInterval(changeImage, 5000);
在clearFunction
函数中,只需执行
window.clearInterval(timer);
答案 3 :(得分:0)
您需要使用clearInterval
var interval = 1;
function autoRun(){
//This function simply makes the slideshow change slides every 5 seconds.
interval = setInterval(changeImage, 5000, 1);
}
function clearFunction(){
clearInterval(interval);
}