2013-06-30 288 views
0

播放整个播放时循环停止在结尾,但不会重新启动并将currentSong设置为1?我的数组中有8首歌曲,它们循环播放它们,当它们结束时,它们会调用NextSong,但是最后一首歌曲什么都不会发生。循环播放歌曲html5音频

function NextSong() 
{ 
    alert("next song"); 
    document.removeEventListener('ended',NextSong); 

    if(rewindClicked ==true) 
    { 
     currentSong--; 
    } 
    else 
    { 
     currentSong++; 
    } 

    if(currentSong > songList.length) 
    { 
     currentSong = 1; 
    } 

    if(currentSong < 1) 
    { 
     currentSong = songList.length; 
    } 

    songList[currentSong].play(); 
    rewindClicked = false; 

    //song.addEventListener('ended', NextSong); 
    songList[currentSong].addEventListener('ended', NextSong); 
} 

回答

0

Arrary指标开始从0

if(currentSong > songList.length) 
{ 
    currentSong = 1; 
} 

songList[currentSong].play(); 

这部分允许currentSong是完全数组的长度,这意味着songList[currentSong]试图访问一个元素出界,你可能在JavaScript看到的错误控制台。换句话说,如果阵列中有8首歌曲,songList[ 7 ]是最后一个。

更改有条件的:

if(currentSong >= songList.length) 

同样,你可能想改变

if(currentSong < 1) 
{ 
    currentSong = songList.length; 
} 

if(currentSong < 0) 
{ 
    currentSong = songList.length - 1; 
} 
+1

还注意到:如果(currentSong> = songList.length) { currentSong = 0; } –