Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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)?_Javascript_Loops_Audio_Foreach - Fatal编程技术网

如何循环浏览歌曲列表而不同时播放所有歌曲(JavaScript)?

如何循环浏览歌曲列表而不同时播放所有歌曲(JavaScript)?,javascript,loops,audio,foreach,Javascript,Loops,Audio,Foreach,我的HTML文档中有一个包含歌曲的音频标签列表: <div class="pop"> <p>Pop</p> <!--Pop Songs--> <audio src="./Pop/We Don't Talk Anymore - Charlie Puth feat. Selena Gomez.mp3"></audio>

我的HTML文档中有一个包含歌曲的音频标签列表:

<div class="pop">
                <p>Pop</p>
                <!--Pop Songs-->
                <audio src="./Pop/We Don't Talk Anymore - Charlie Puth feat. Selena Gomez.mp3"></audio>
                <audio src="./Pop/Senorita - Camila Cabello feat. Shawn Mendes.mp3"></audio>
                <audio src="./Pop/Sucker - Jonas Brother.mp3"></audio>
                <audio src="./Pop/Sunflower - Post Malone feat. Swae Lee.mp3"></audio>
                <audio src="./Pop/No Brainer - DJ Khaled feat. Justin Bieber, Quavo, Chance The Rapper.mp3"></audio>
</div>

你不需要计算出所有歌曲的长度,也不需要设置计时器或其他任何东西。只需使用


你循环播放每首歌,让他们播放,所以。。。事情就是这样。这并不奇怪。你试图得到你想要的是什么?确切的代码,但是所有的歌曲都同时播放。每首歌之间没有时间间隔,所以它们同时播放。好吧,但是你确实看到了问题所在,对吗?你让他们同时玩,所以他们就是这么做的。这就是你所尝试的?但是如果每首歌都有不同的时间长度,我该如何编辑代码以适应每首歌的时间长度而不会听起来重复?@zfrish是对的!您可以在此处检查结束事件的工作方式
const popSongs = document.querySelectorAll(".pop audio");

popSongs.forEach(song => {
    song.play();
})
// Get All Songs
const popSongs = document.querySelectorAll(".pop audio");

// For Each Song
popSongs.forEach((song, songIndex) => {

// Get the Next Song
let nextSong = popSongs[ songIndex === popSongs.length - 1 ? 0 : ++songIndex  ];

// When Current Song Ends
song.addEventListener("ended", function() {

//Play the Next Song
  nextSong.play();

  });
});

// Play first song
popSongs[0].play();