Javascript 停止并播放不同的声音

标签 javascript html5-audio

我正在用 javascript 构建一个简单的 Web 应用程序,其中有 3 个按钮播放 3 种不同的 mp3 声音。我有点被逻辑困住了。如果我先播放按钮 1,然后再播放按钮 2,我需要声音 1 来停止并播放声音 2。我该怎么做?

我的代码:

Javascript:

function playSound(el, soundfile) {
    if (el.mp3) {
        if(el.mp3.paused) el.mp3.play();
        else el.mp3.pause();
    } else {
        el.mp3 = new Audio(soundfile);
        el.mp3.play();
    }
}

HTML:

<a class="btn" onclick="playSound(this, 'sounds/sound-1.mp3');">sound 1</a>
<a class="btn" onclick="playSound(this, 'sounds/sound-2.mp3');">sound 2</a>
<a class="btn" onclick="playSound(this, 'sounds/sound-3.mp3');">sound 3</a>

提前致谢

最佳答案

将播放的音频存储在数组中:

var playing=[];

//when played
playing.push(el.mp3);

现在您可以使整个数组静音:

playing.forEach(el=>el.pause());
playing=[];

关于Javascript 停止并播放不同的声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41594935/

相关文章:

javascript - js中的随机声音

javascript - 如何在 td 标签内叠加音频标签

javascript - 如何在 iPad 上使用 HTML5/Javascript 合成音频

javascript - 检查用户是否阻止了第 3 方域

javascript - REACT 获取发布请求

javascript - 视差脚本(通过代码注入(inject)注入(inject)到 Enjin 中)无法点击按钮

javascript - 音频播放完毕后如何停用 IE 中的播放按钮?

javascript - 伴随着名字连续播放的音乐

javascript - 为什么 rails 在 coffeescript 文件不能包含 javascript 代码时使用 .js.coffee 扩展名?

javascript - 如何在 javascript 中获取最大可用屏幕高度?