Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环播放html5音频中的歌曲_Javascript_Html_Audio - Fatal编程技术网

Javascript 循环播放html5音频中的歌曲

Javascript 循环播放html5音频中的歌曲,javascript,html,audio,Javascript,Html,Audio,当播放整个播放站点时,循环在结束时停止,但它不会重新启动并将currentSong设置为1?我的数组中有8首歌,它循环播放每首歌,当它们结束时,它们调用NextSong,但当最后一首歌播放时,什么也没有发生 function NextSong() { alert("next song"); document.removeEventListener('ended',NextSong); if(rewindClicked ==true) { curr

当播放整个播放站点时,循环在结束时停止,但它不会重新启动并将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);
}
函数NextSong()
{
警报(“下一首歌”);
文件。删除文件列表器(“已结束”,下一首歌);
如果(倒带单击==真)
{
当前歌曲--;
}
其他的
{
当前歌曲++;
}
如果(当前歌曲>歌曲列表.长度)
{
currentSong=1;
}
如果(当前歌曲<1)
{
currentSong=songList.length;
}
歌曲列表[currentSong]。播放();
倒带=假;
//歌曲。添加的歌曲列表(“结束”,下一首歌曲);
歌曲列表[currentSong].addEventListener('ended',NextSong);
}

数组索引从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(当前歌曲<1)
{
currentSong=songList.length;
}

if(当前歌曲<0)
{
currentSong=songList.length-1;
}
还注意到:if(currentSong>=songList.length){currentSong=0;}
if(currentSong < 0)
{
    currentSong = songList.length - 1; 
}