javascript - 遍历歌曲数组html5音频

标签 javascript html audio

播放完整个播放站点后,循环将在结尾处停止,但不会重新启动并将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);
}

最佳答案

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

关于javascript - 遍历歌曲数组html5音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17388156/

相关文章:

javascript - 如何使用 addEventListener(webkitTransitionEnd) 在 window.close() 之前延迟?

python - PygameRaspberry Pi失败

iphone - 设备中出现声音问题

javascript - instance.rootElement.getAttribute 不是函数

javascript - 单击按钮以使用 CasperJS 下载文件

html - 图像一直透明到背景,但不是标题颜色

确定音频样本调的算法

javascript - 这个 jquery 有什么问题?

javascript - jQuery 循环遍历数组对象

html - 如何对齐CSS下拉菜单的包装