2017-05-16 62 views
-1

我有一个功能,当页面打开时自动加载。我想让功能在“onclick”后停止运行。我想让幻灯片在点击一个按钮后自动停止运行。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> 
+1

您可以创建一个全局变量。例如:var checkRun = true;您可以在函数中检查此变量,并在第一次运行时将其设置为false。 –

+0

那么autoRun()必须做某种setInterval。您需要在autoRun()之外维护对它的引用,并在clearFunction()中使用clearInterval。请发布autoRun() – vabii

回答

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); 
} 
+0

工作。万分感谢! – John

0

你可以把所有的代码autoRun()if(flag)内与flag在于最初设置为true一个布尔值,然后你可以设置flag=falseclearFunction(),所以每当clearFunction()叫,flag设置为falseautorun()中的代码将不会执行,因为它不会通过if(flag)检查。

请注意,flag需要是一个全局变量。

+0

的内容。国旗必须在changeImage ... –

0

你可以让一个窗口间隔调用autoRun每5000毫秒。

// anywhere in your script, outside of any function 
let timer = window.setInterval(changeImage, 5000); 

clearFunction功能,只是做

window.clearInterval(timer); 

window.setInterval

+0

修正了它的权利,因为你评论! – glhrmv

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); 
    }