Javascript 如何停止一个函数使用另一个函数

Javascript 如何停止一个函数使用另一个函数,javascript,Javascript,我对编码很不熟悉,所以在这一点上请容忍我 我目前正在创建一个图像库,它有一个自动播放按钮功能,我已经设法创建了这个功能,但是我似乎无法找到一种方法来停止它,而不刷新页面。理想情况下,我想使用另一个单独的函数来停止它,该函数在单击第一个图像时调用它 //Autoplay button// function autoPlay() { (function () { var gallery = document.getElementById('gallery'); //Iden

我对编码很不熟悉,所以在这一点上请容忍我

我目前正在创建一个图像库,它有一个自动播放按钮功能,我已经设法创建了这个功能,但是我似乎无法找到一种方法来停止它,而不刷新页面。理想情况下,我想使用另一个单独的函数来停止它,该函数在单击第一个图像时调用它

//Autoplay button//

function autoPlay() {
    (function () {
        var gallery = document.getElementById('gallery'); //Identifying image ID
        var delayInSeconds = 60; // setting number of seconds to delay images
        var images = ["Images/1.JPG", "Images/2.JPG", "Images/3.JPG", "Images/4.JPG", "Images/5.JPG", "Images/6.JPG", ]; // list of image names
        var num = 0;
        var changeImage = function () {
            var len = images.length;
            gallery.src = images[num++];
            if (num === len) {
                num = 0;
            }
        };
        setInterval(changeImage, delayInSeconds * 50);
    })();
}
document.getElementById("play").onclick = autoPlay;

//Stop button//

function stopButton() {
    document.getElementById('gallery').src = 'Images/1.JPG';
}
document.getElementById("stop").onclick = stopButton;

您可以清除间隔,首先指定一个全局变量:

// your code
window.varInterval = setInterval(changeImage, delayInSeconds * 50);
// your code

function stopButton (){
   clearInterval(varInterval); // this is the key
   document.getElementById('gallery').src = 'Images/1.JPG';
}

祝你好运

您不能从任何地方停止执行一个函数。但如果您使用的是setInterval,则可以使用停止/清除它

完整代码:

//Autoplay button//
var intervalVar;

function autoPlay() {
    (function () {
        var gallery = document.getElementById('gallery'); //Identifying image ID
        var delayInSeconds = 60; // setting number of seconds to delay images
        var images = ["Images/1.JPG", "Images/2.JPG", "Images/3.JPG", "Images/4.JPG", "Images/5.JPG", "Images/6.JPG", ]; // list of image names
        var num = 0;
        var changeImage = function () {
            var len = images.length;
            gallery.src = images[num++];
            if (num === len) {
                num = 0;
            }
        };
        intervalVar = setInterval(changeImage, delayInSeconds * 50);
    })();
}
document.getElementById("play").onclick = autoPlay;

//Stop button//

function stopButton() {
    clearInterval(intervalVar);
    document.getElementById('gallery').src = 'Images/1.JPG';
}
document.getElementById("stop").onclick = stopButton;

我们能看一下你的HTML代码吗?我还没有读过所有的东西,但我认为是破折号;我会做你想做的。@Manu的可能副本这里没有循环可以打破。@juhana是的,你的权利啊好的,对不起,我会删除我最后的答案。我的耻辱非常感谢你!这是为了我。其实我之前也试过这个方法,只是没有正确命名。
//Autoplay button//
var intervalVar;

function autoPlay() {
    (function () {
        var gallery = document.getElementById('gallery'); //Identifying image ID
        var delayInSeconds = 60; // setting number of seconds to delay images
        var images = ["Images/1.JPG", "Images/2.JPG", "Images/3.JPG", "Images/4.JPG", "Images/5.JPG", "Images/6.JPG", ]; // list of image names
        var num = 0;
        var changeImage = function () {
            var len = images.length;
            gallery.src = images[num++];
            if (num === len) {
                num = 0;
            }
        };
        intervalVar = setInterval(changeImage, delayInSeconds * 50);
    })();
}
document.getElementById("play").onclick = autoPlay;

//Stop button//

function stopButton() {
    clearInterval(intervalVar);
    document.getElementById('gallery').src = 'Images/1.JPG';
}
document.getElementById("stop").onclick = stopButton;