onclick后禁用功能

时间:2017-05-16 19:09:07

标签: javascript html

我有一个在页面打开时自动加载的功能。我希望函数在" 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>

4 个答案:

答案 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=falseclearFunction()内,所以每当调用clearFunction()时,flag都会设置为falseautorun()内的代码将无法执行,因为它无法通过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);

请参阅window.setInterval

答案 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);
    }
相关问题