循环播放html5音频阵列

时间:2013-06-30 07:25:05

标签: javascript html5 audio

播放整个playite时,循环停止,但是不会重启并将currentSong设置为1?我的阵列中有8首歌曲,它循环播放每个歌曲并播放它们,当它们结束时它们会调用NextSong,但是当最后一首歌曲没有任何发生时。

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);
}

1 个答案:

答案 0 :(得分: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; 
}