2015-05-17 69 views
3

我有一個關於在for循環中使用包含Audio-sources(鏈接)的數組的小問題。如何循環訪問音頻文件的JavaScript數組?

這是我的代碼,基本上是:

var audio = new Audio(); 
    var playlist = new Array('sounds/song0.m4a', 'sounds/song1.m4a', 'sounds/song2.m4a'); 

     for (var i = 0; i <= playlist.length; i++){ 
    audio.src = (playlist[i]); 
    audio.volume = 0.3; 
    audio.loop = false; 
    if (audio.ended = true) 
     i++; 

    if (i = 2) { 
     i = 0; 
    } 

我的控制檯給我一個錯誤的audio.src =(播放列表[1]); 。任何人都知道如何解決此問題?

回答

5

您需要使用ended事件

var audio = new Audio(), 
    i = 0; 
var playlist = new Array('http://www.w3schools.com/htmL/horse.mp3', 'http://demos.w3avenue.com/html5-unleashed-tips-tricks-and-techniques/demo-audio.mp3'); 

audio.addEventListener('ended', function() { 
    i = ++i < playlist.length ? i : 0; 
    console.log(i) 
    audio.src = playlist[i]; 
    audio.play(); 
}, true); 
audio.volume = 0.3; 
audio.loop = false; 
audio.src = playlist[0]; 
audio.play(); 
+0

我應該如何實現這個在我的代碼? 如果我想播放歌曲並循環播放1 - 結束,下一首歌曲:2,結束,下一首歌曲:3,結束:循環重新啓動爲1。 - 編輯:我想我得到它的工作,謝謝您! – Kryptonous

+0

好吧,它似乎可以播放,但當歌曲結束時,它不會跳到下一首歌曲。我應該如何實現? – Kryptonous

+0

@Kryptonous http://jsfiddle.net/arunpjohny/rxs8xfLn/1/ –