2017-05-16 6 views
-1

ページが開くときに自動的に読み込む機能があります。 "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

あなたはflagが最初trueに設定され、その後、あなたがclearFunction()flag=falseを設定することができますので、clearFunction()が呼ばれるたびに、flagfalseに設定されているブールものでif(flag)内部autoRun()ですべてのコードを置くことができますし、 autorun()のコードはif(flag)のチェックをパスしないため実行されません。

flagはグローバル変数である必要があります。

+0

の内容を投稿してください。フラグはchangeImageにある必要があります... –

0

あなたはautoRunごとに5000ミリ秒を呼び出し、ウィンドウ間隔を作ることができます。 clearFunction機能で

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

、ちょうど

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); 
    } 
関連する問題