我有一个使用音频标签的播客链接列表,当我点击播放按钮时,它们都会播放,但我希望第一个在我播放另一个时暂停

<div class="podcast-container">
    <audio controls src="https://assets.mixkit.co/music/preview/mixkit-tech-house-vibes-130.mp3"></audio>
    <audio controls src="https://assets.mixkit.co/music/preview/mixkit-hazy-after-hours-132.mp3"></audio>
    <audio controls src="https://assets.mixkit.co/music/preview/mixkit-tech-house-vibes-130.mp3"></audio>
</div>

我try 使用下面的代码暂停音频,但它根本不播放.请帮

  const tracks = Array.from(document.querySelectorAll('audio'));
   tracks.forEach(function (track) {
      track.addEventListener('play', (event) => {
         tracks.forEach(function (track) {
             track.pause();
         })
      })
   })

推荐答案

您的代码的问题在于,您没有判断当前播放的音频,传递pause()将暂停所有音频.您需要使用event这样判断当前音频,如果曲目与当前曲目不相等,则暂停它.

if (track !== event.target) track.pause();

总体代码应如下所示.

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

Javascript相关问答推荐

React redux状态未在React-Router库中呈现

想要检测字符串中的所有单词

访客柜台的风格React.js

如何使用JavaScript动态地将CSS应用于ToDo列表?

如何在不分配整个数组的情况下修改包含数组的行为主体?

使用TMS Web Core中的HTML模板中的参数调用过程

如何才能拥有在jQuery终端中执行命令的链接?

单击子元素时关闭父元素(JS)

网页自检测外部元素无法加载

JS,当你点击卡片下方的绿色空间,而它是在它的背后转动时,

如何将Cookie从服务器发送到用户浏览器

VUE 3捕获错误并呈现另一个组件

在WordPress中使用带有WPCode的Java代码片段时出现意外令牌错误

从页面到应用程序(NextJS):REST.STATUS不是一个函数

更新Redux存储中的对象数组

Next.js中的服务器端组件列表筛选

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

如何在Firebase中读取对象的特定字段?

如何使pdf.js上的文本呈现为可选?

当S点击按钮时,我如何才能改变它的样式?