当另一个声音开始时,Javascript 停止播放声音

标签 javascript

所以,在编码方面我是一个完全的业余爱好者,但我仍然喜欢摆弄它。 我目前正在开发一个基于 html/jS/PHP 的音板,但我不知道如何在按下按钮播放另一个按钮时停止播放声音。

<script type="text/javascript" charset="utf-8">
        $(function() {
            $("audio").removeAttr("controls").each(function(i, audioElement) {
                var audio = $(this);
                var that = this; //closure to keep reference to current audio tag
                $("#doc").append($('<button>'+audio.attr("title")+'</button>').click(function() {
                    that.play();
                }));
            });
        });
    </script>

我希望有人能理解这一点。提前致谢。 还有一个 PHP 代码可以自动从文件夹中获取音频文件到前端,对于这个问题可能是不必要的信息。

最佳答案

如果您使用引入了 HTMLAudioElement 的 HTML5,这并不是很难做到的。 .

这是您想要执行的操作的最少代码:

// Let's create a soundboard module ("sb")
var sb = {
  song: null,
  init: function () {
    sb.song = new Audio();
    sb.listeners();
  },
  listeners: function () {
    $("button").click(sb.play);
  },
  play: function (e) {
    sb.song.src = e.target.value;
    sb.song.play();
  }
};

$(document).ready(sb.init);
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Audio</title>
</head>
<body>
  <button value="https://www.gnu.org/music/FreeSWSong.ogg">Song #1</button>
  <button value="https://www.gnu.org/music/free-software-song-herzog.ogg">Song #2</button>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</body>
</html>

您还可以考虑像 howler.js 这样的库在开发过程中为您提供帮助。

关于当另一个声音开始时,Javascript 停止播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430897/

相关文章:

javascript - javascript if 和 else 的问题

javascript - firefox »find as you type« 与 JavaScript 键事件冲突

javascript - Webkit 和 jQuery 可拖动跳跃

javascript - Drupal 未定义 - jQuery (Drupal 8)

javascript - 改变高度时跳动的导航栏(粘性属性)

javascript - 单击按钮切换输入

javascript - 将数据从两个组件传输到服务( Angular 2)

javascript - React 组件中如何处理内存?

javascript - 使用纯 JS 在 jQuery 中像 wrap() 函数一样包装元素

javascript - 正则表达式 - 匹配除+之外的任何字符,空字符串也应该匹配