JS-防止同时播放多个音频文件

Pedro Cobos的图片

我写了一个函数,一个数组迭代,创建一个querySelector,一个audio元素,并addsEventListener发挥上的按钮,当点击音频元素。

我的问题是我无法弄清楚如何一次只播放一首曲目。理想的行为是,当用户单击按钮时,所有其他轨道都将停止或暂停。

我尝试根据我在SO中找到的类似解决方案的建议使用for循环,但是它不起作用。我想我没有将其添加到应该控制流量的位置。

任何帮助将不胜感激,谢谢。

const tracks = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]
// 

const newAudioTracks = () => {
  tracks.forEach(function(track) {
    const button = document.querySelector(`#track-${track}`);
    const musicTrack = new Audio(`/music/track${track}.mp3`);
    musicTrack.id = track;
    button.addEventListener('click', (event) => {
      event.preventDefault();
      musicTrack.paused ? musicTrack.play() : musicTrack.pause();
    })
  })
}

newAudioTracks();

用户名

问题是您的事件仅会触发一个元素,然后您需要遍历其他事件,一个又一个地暂停。

这是一个示例,我传递了属性控件,而不是创建一个外部按钮来播放,但是如果您使用自定义按钮,逻辑是相同的。

const tracks = Array.from(document.querySelectorAll('audio'));

tracks.forEach(function(track) {
    track.addEventListener('play', (event) => {
      tracks.forEach(function(track) {
        if(track !== event.target) track.pause();
      })
    })
})
<audio src="https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3" controls></audio>
<audio src="https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3" controls></audio>
<audio src="https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3" controls></audio>
<audio src="https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3" controls></audio>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一键事件咆哮js播放多个音频文件

来自分类Dev

如何同时播放多个音频文件

来自分类Dev

组件以同时播放多个音频文件(单击)Aframe webVR

来自分类Dev

依次播放多个音频文件

来自分类Dev

使用AVAudioPlayer播放多个音频文件

来自分类Dev

Phoenix Js和音频文件添加

来自分类Dev

加载多个音频文件,即使互联网连接不佳也可以同时播放

来自分类Dev

如何使用js音频api播放多个音频

来自分类Dev

播放/暂停/停止本地存储的多个音频文件

来自分类Dev

Javascript音频-页面上的多个播放按钮带有单独的音频文件

来自分类Dev

如何使用javascript随机播放音频标签中的多个音频文件?

来自分类Dev

如何链接多个HTML5音频文件(如平滑播放列表)的播放?

来自分类Dev

如何使用NAudio同时播放具有实时大小值的两个音频文件

来自分类Dev

NAudio:在保持声卡打开的同时播放许多音频文件

来自分类Dev

在Python中播放远程音频文件?

来自分类Dev

星号,如何播放音频文件

来自分类Dev

如何播放AMR音频文件?

来自分类Dev

无法识别播放哪个音频文件

来自分类Dev

使用Swift播放随机音频文件

来自分类Dev

从目录快速播放音频文件

来自分类Dev

用golang播放音频文件

来自分类Dev

悬停播放音频文件

来自分类Dev

如何播放音频文件?

来自分类Dev

如何循环播放我的音频文件?

来自分类Dev

音频文件无法在reactjs中播放

来自分类Dev

AVPlayer无法播放FFMPEG的音频文件

来自分类Dev

用力宝播放音频文件

来自分类Dev

Android播放音频文件(.wav)

来自分类Dev

无法识别播放哪个音频文件