Ich habe mehrere Audioelemente auf einer Seite, die mit JavaScript basierend auf Benutzerauswahlen mithilfe von Kontrollkästchen erstellt werden. Wenn der Benutzer auf eine Schaltfläche "Abspielen" klickt, möchte ich zufällig ausgewählte Audiotracks mit einer vom Benutzer einstellbaren Verzögerung zwischen den Tracks abspielen, bis sie auf die Schaltfläche "Stop" klicken. Ich habe diesen CodeWiedergabe von Audiotracks nach dem Zufallsprinzip ohne Rekursion
function loopmusic(){
if (!looping){
alert('exiting loopmusic()');
return 0;
}
var audioElements = document.getElementsByTagName('audio');
var index = Math.floor(Math.random() * audioElements.length);
//audioElements[index].volume=0.5;
$(audioElements[index]).bind("ended", function(){
audioElements[index].pause()
loopmusic()
});
setTimeout(audioElements[index].play(), delayms);
}
Dieser Code angepasst wurde aus dem, was ich hier gelesen: How to play each audio element on a page (HTML, JQuery, Javascript)
Gerade jetzt der Ereignis-Listener scheint nicht die Art und Weise zu handeln ich erwartet hatte, gibt es keine Verzögerung zwischen den Tracks und mehrere Titel gleichzeitig spielen. Ich hätte gern irgendwelche Hinweise, wie man das beheben kann, und wenn ich es ohne Rekursion tun könnte, wäre das vorzuziehen. Dies kann für einige Zeit laufen und ich möchte vermeiden, dass es eine Menge Speicher verbraucht.
Warum rufen Sie '.pause()' nach dem Track abgeschlossen? Wo sind 'Verzögerungszeichen' definiert? – guest271314
Entschuldigung, ich wollte keine Tonne Code veröffentlichen, ja die globale Variable looping und die globale Variable delayms sind definiert, bevor die Funktion loopmusic() aufgerufen wird. Ich habe .pause() angerufen, weil ich es in einem anderen Posting gesehen habe und dachte, es würde die mehreren Tracks gleichzeitig stoppen, aber ich habe keine Ahnung, was an diesem Punkt vor sich geht, daher sind alle Vorschläge willkommen. – user3315297
Haben Sie 'js' auf dem Post versucht? Das heißt, '' '' bei '.play()' bei 'setTimeout' zu entfernen? was sofort '.play()' aufruft? – guest271314