2013-09-30 3 views
0

У меня есть несколько аудиофайлов (a.mp3, b.mp3, c.mp3) и случайный массив (b, c, a). Я хочу воспроизвести эти аудиофайлы в данном порядке, например, в плейлисте.
Это мой код до сих пор:Плейлист с JavaScript

<audio id="player" /> 

<script> 
//... extract 

var player = document.getElementById('player'); 
player.src="audio/"+array[0]+".mp3"; 
player.play(); // play first file 

for(c = 0; c < array.length; c++){ 
var next = "audio/"+array[c]+".mp3"; 
document.write(next); 
    player.addEventListener("ended",function() { 
     this.src = next; 
     this.play(); 
    }); 
} 
</script> 

Проблема заключается в том, после того, как воспроизведение первого файла, второй файл воспроизводится навсегда. Он никогда не останавливается, и следующий файл не может быть воспроизведен.

+0

@Paulpro Я предполагаю, что массив имеет только два элемента. – bfavaretto

+0

Нет, он в этом случае имел 3 элемента и действительно зациклил второй файл. – user1170330

ответ

2

Вам не нужен цикл, решить, что дальше от «закончился» Слушатель:

var current = 0; 
// ... 
player.addEventListener("ended",function() { 
    current = current + 1 < array.length ? ++current : 0; 
    this.src = "audio/" + array[current] + ".mp3"; 
    this.play(); 
}); 
+0

Спасибо. Теперь он проходит через все мои файлы (например, 3) и петли, а затем первый. – user1170330

+0

Да, ток никогда не сбрасывается до 0, когда он вращается вокруг, но он должен. – andi

+0

@andi Правда, исправлено это. Больше нет. – bfavaretto

Смежные вопросы