You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现audio标签单音频播放:播放新音频时自动暂停当前音频

解决多音频播放时自动暂停其他音频的问题

你的代码无法播放的核心问题是:当某个音频触发play事件时,你直接遍历所有音频调用pause(),这会把当前正要播放的音频也一并暂停,导致所有音频都无法启动播放。

修正后的代码

HTML部分(无需修改)

<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>

JavaScript部分(关键修正)

const tracks = Array.from(document.querySelectorAll('audio'));
tracks.forEach(function (currentTrack) {
    currentTrack.addEventListener('play', () => {
        // 只暂停当前触发播放事件之外的音频
        tracks.forEach(function (track) {
            if (track !== currentTrack) {
                track.pause();
            }
        });
    });
});

修正说明

在内部遍历音频列表时,增加了track !== currentTrack的判断:

  • 当点击某一个音频的播放按钮时,先暂停所有非当前点击的音频
  • 保留当前触发播放事件的音频继续播放,实现「播放新音频时自动暂停其他音频」的需求

内容的提问来源于stack exchange,提问作者Faithful

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:52:14