2016-05-04 2 views
1

Ich habe eine mp3-Datei, die ich von Punkt A zu Punkt B wiederhole. Ich setze Intervalle für die Start- und Endzeit, aber wenn ich Pause drücke, hält es an, bis sich die Funktion wiederholt. Wie kann ich das Javascript anhalten und die Funktion vollständig anhalten?Javascript für Einstellungsintervalle

var audio = document.getElementById('testPlayer'); 
setInterval(function play1(){ 
    audio.currentTime = 7; 
    audio.play(); 
    int = setInterval(function() { 
     if (audio.currentTime > 100) { 
      audio.pause(); 
      clearInterval(int); 
     } 
    }, 10); 
}, 7000); 
function pause(){ 
    audio.pause(); 
} 

Vielen Dank für Ihre Hilfe im Voraus.

+0

Erwägen Sie einen Ereignishandler nur verbindlich, anstatt mit ' setInterval'. – zzzzBov

Antwort

2

Sie müssen einer Variablen ein Intervall zuweisen, um sie zu löschen.

Versuchen Sie, diese Zugabe:

var play1interval = setInterval(function play1(){ 
    ... 
    if (audio.currentTime > 100) { 
     audio.pause(); 
     clearInterval(int); 
     clearInterval(play1interval); 
    } 
    }, 10); 
}, 7000); 

Darüber hinaus können Sie ein Intervall sagen, eine Funktion zu verweisen, anstatt sie direkt in hinzufügen zu müssen.

function play1(){ 
    ... 
} 

function interval(){ 
    var int = setInterval(play1, 10); 
} 

var play1interval = setInterval(interval, 7000); 

Was nicht notwendig ist, macht nur Dinge einfacher zu lesen.

+0

Also sollte der Code so aussehen? var audio = document.getElementById ('testPlayer'); var play1interval = setInterval (Funktion play1() { audio.currentTime = 7; audio.play(); if (audio.currentTime> 100) { audio.pause(); clearInterval (int); clearInterval (play1interval); } }, 10); }, 7000); – EliTownsend

0

Wie bekomme ich das Javascript zu pausieren und die Funktion vollständig zu stoppen?

Verwenden Sie nicht setInterval. Es gibt eine Reihe von Ereignissen, die Sie verwenden können, die <audio> auslösen wird.

Mit dem Ereignis timeupdate kann eine einfache Schleife erstellt werden.

document.querySelector('audio').addEventListener('timeupdate', function (e) { 
 
    if (e.target.currentTime > 6) { 
 
    e.target.currentTime = 0; 
 
    } 
 
}, false);
<audio src="http://167.88.156.219/phc/2016/04/30/phc_20160430_128.mp3" controls autoplay></audio>

ich dies nur in Chrom getestet haben, so werde ich als Übung Cross-Browser-Implementierung lassen für den Leser

+0

Wie würdest du das Lied mit 9 Sekunden anfangen und mit 13 enden? – EliTownsend

+0

@EliTownsend, ich würde den Code ändern, um eine andere Reihe von Vergleichen zu verwenden. – zzzzBov

+0

@EliTownsend, obwohl Sie auch in Betracht ziehen sollten, die Audiodatei nur so zu beschneiden, dass sie nur das wiedergeben soll, was Sie wollen, und dann das 'loop' Attribut auf dem'