2016-03-21 7 views
0

Ich möchte, dass meine Diashow-Navigationstasten zwischen Bildern wechseln, auf diesem Bild pausieren und dann die Diashow fortsetzen. Derzeit ändert sich das Bild, wenn der Benutzer klickt. Abhängig davon, wann dieses Ereignis eintritt, überspringt die Diashow Bilder oder zeigt zwei schnell. Ich bin mir nicht sicher, wie ich die Pause erstellen soll, bevor die Diashow fortgesetzt wird. Mein Code sieht derzeit so aus:Diashow muss nach der Verwendung der Navigationstasten angehalten werden

<script type="text/javascript" language="JavaScript"> 
    var step = 0; 
    function slideIt(){ 
     if(!document.images) return; 
      document.getElementById('slide').src = slideshow[step].src; 
       if (step < 3){ 
        step++; 
       } 
       else{ 
        step = 0; 
       } 
      setTimeout('slideIt()', 3500); 
    } 
    function previousImg(){ 
     if(!document.getElementById) return; 
      document.getElementById('slide').src = slideshow[step].src; 
       if (step > 0){ 
        step--; 
       } 
       else{ 
        step = 3; 
       } 
    } 
    function nextImg(){ 
     if(!document.getElementById) return; 
      document.getElementById('slide').src = slideshow[step].src; 
       if (step < 3){ 
        step++; 
       } 
       else{ 
        step = 0; 
       } 
    } 
    slideIt(); 
</script> 

Wieder möchte ich die Diashow nicht vollständig anhalten, nur pausieren.

Antwort

0

Ich denke, Sie müssen nur die Zeitüberschreitung zurücksetzen. Wenn die Timeout-Einstellung, halten einen Verweis darauf:

var tout; //declare a variable that will hold reference to your timeout*** 
var step = 0; 
function slideIt(){ 
    if(!document.images) return; 
    document.getElementById('slide').src = slideshow[step].src; 
     if (step < 3) { 
      step++; 
     } 
     else { 
      step = 0; 
     } 
    tout = setTimeout(slideIt, 3500); //*** 
} 

Dann, wenn Benutzer klickt, das Timeout zurückgesetzt, dh es wieder machen beginnen:

clearTimeout(tout); 
tout = setTimeout(slideIt, 3500); 

Oder besser, wickeln Sie es in ein separate Funktion:

function restartTimeout() { 
    clearTimeout(tout); 
    tout = setTimeout(slideIt, 3500); 
} 

Und gerade aus slideIt() diese Funktion aufrufen.

PS. Stellen Sie sicher, dass die Anzahl der Folien in Ihrem endgültigen Code nicht fest codiert ist (ich meine 3 in Ihrem Schnipsel) und erinnern Sie sich an DRY Regel (wiederholen Sie nicht): Ihre Funktionen scheinen sehr ähnlich zu sein.

+0

Es funktioniert ziemlich gut für die Vorwärts-Taste, aber ich bin in zwei Probleme läuft: Es wird gegen Ende der Timeout-Zeit, wenn der Knopf geklickt wird und es scheint nicht für die Zurück-Schaltfläche funktionieren. – Annadote

+0

Könnten Sie den Code posten, den Sie beim Klicken auf die Schaltflächen aufrufen (d. H. Wann rufen Sie diese Funktionen 'previousImg()' und 'nextImg' auf?) Und was meinst du mit * es wird nervös * :)? – misko321

+0

Der HTML-Code sieht folgendermaßen aus: . Es ist im Grunde das gleiche für den anderen Knopf. Mit jumpy meine ich, dass es zum nächsten Bild geht und sofort zum folgenden Bild wechselt, wenn die Schaltfläche gegen Ende der Timeout-Zeit angeklickt wird. – Annadote

Verwandte Themen