首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环遍历歌曲数组html5音频

循环遍历歌曲数组html5音频
EN

Stack Overflow用户
提问于 2013-06-30 15:25:05
回答 1查看 675关注 0票数 0

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

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-30 15:34:46

数组索引从0开始。

代码语言:javascript
复制
if(currentSong > songList.length)
{
    currentSong = 1;
}

songList[currentSong].play();

这部分允许currentSong恰好是数组的长度,这意味着songList[currentSong]试图访问超出界限的元素,您可能会在JavaScript error console中看到这种情况。换句话说,如果数组中有8首歌曲,songList[ 7 ]就是最后一首。

将条件更改为:

代码语言:javascript
复制
if(currentSong >= songList.length)

类似地,您可能想要更改

代码语言:javascript
复制
if(currentSong < 1)
{
    currentSong = songList.length; 
}

代码语言:javascript
复制
if(currentSong < 0)
{
    currentSong = songList.length - 1; 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17388156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档