我问了类似的问题,但很快就发现它不在主题范围内,所以让我解释一下我的问题。
我有5个音频。每个音频的目标是播放3次。
这是代码:
$('audio').each(function(index){
playAudio(this.player, index);
});
function playAudio(audio, index){
var loop = 3;
// This will loop 3 times
for(var i = 0; i < loop; i++){
audio.play();
$('.worship-items audio').eq(index).on('ended', function(){
// When the song has ended, set the progress(current time) back to 0 seconds.
audio.setCurrentTime(-1);
audio.pause();
});
}
}
我遇到的问题是控制台给我这个错误:
有人可以帮我吗?
编辑:我被要求添加html,因此它是:
<audio src="audio1.mp3"></audio>
<audio src="audio2.mp3"></audio>
<audio src="audio3.mp3"></audio>
<audio src="audio4.mp3"></audio>
<audio src="audio5.mp3"></audio>
最佳答案
for
循环同步运行。您需要在ended
处理程序中放置要重复的调用。
同样,.each()
同步运行。仅当前一个音频的所有重复结束时,才需要开始下一个音频。
function playAudio(audios, index, loop, counter) {
if (counter >= loop) {
index++;
if (index >= audios.length) {
return;
}
playAudio(audios, index, loop, 0);
}
let audio = audios[index];
audio.player.play();
$(audio).off("ended").on("ended", function() {
this.player.setCurrentTime(-1);
playAudio(this, index, loop, counter + 1);
});
});
playAudio($(".worship-items audio"), 0, 3, 0);