javascript 在音频中添加 onend 事件

标签 javascript jquery events audio

我希望这不会被认为是重复的,因为我已经搜索了许多与我的问题相关的问题。不过,我对 javarscript 和 jquery 完全是菜鸟,所以请记住这一点。

我有以下代码,其中一切正常,但在音频文件完成后,图标不会更改为“播放”,并且文件不会重新加载。 我尝试添加 onending 事件,但我不确定具体在哪里以及如何执行。这将为我的项目带来很大帮助,我将不胜感激。谢谢!

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>


</head>
<body>

<div class="btn btn-xs" id="btn1"><i class="glyphicon glyphicon-play"></i></div>

<div class="btn btn-xs" id="btn2"><i class="glyphicon glyphicon-play"></i></div>

<div class="btn btn-xs" id="btn3"><i class="glyphicon glyphicon-play"></i></div>


<!-- SOUNDS -->
<audio id="sound1">
    <source src="http://www.internetdj.com/mp3/108215.mp3" type="audio/mpeg" />
</audio>

<audio id="sound2">
    <source src="http://www.bigsoundbank.com/sounds/ogg/0580.ogg" type="audio/ogg" />
</audio>

<audio id="sound3">
    <source src="http://www.bigsoundbank.com/sounds/ogg/0003.ogg" type="audio/ogg" />
</audio>


</body>
<script src="js/jquery-2.1.4.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<link href="css/bootstrap.css" rel="stylesheet" />
<script type="text/javascript">
    $('.btn').click(function () {
        var $this = $(this);
        var id = $this.attr('id').replace(/btn/, '');
        var play = '<div class="btn btn-xs"><i class="glyphicon glyphicon-play"></i></div>';
        var pause = '<div class="btn btn-xs"><i class="glyphicon glyphicon-pause"></i></div>';
        $this.toggleClass('active');
        if ($this.hasClass('active')) {
            $this.html(pause);
            $('audio[id^="sound"]')[id - 1].play();
        } else {
            $this.html(play);
            $('audio[id^="sound"]')[id - 1].pause();
            $('audio[id^="sound"]')[id - 1].pause();
        }
    });
</script>
</html>

最佳答案

JS

 $('.aud').bind("ended",function(){
  var btn_id = $(this).attr("id").replace(/sound/,'');
  btn_id = "btn" + btn_id;
  var play = '<div class="btn btn-xs"><i class="glyphicon glyphicon-play"></i></div>';
        var pause = '<div class="btn btn-xs"><i class="glyphicon glyphicon-pause"></i></div>';


  $("#"+btn_id).toggleClass('active');

  if(!$("#"+btn_id).hasClass('active')){
    $("#"+btn_id).html(play);
  }


  alert("finished");
});

$('.btn').click(function () {
        var $this = $(this);
        var id = $this.attr('id').replace(/btn/, '');
        var play = '<div class="btn btn-xs"><i class="glyphicon glyphicon-play"></i></div>';
        var pause = '<div class="btn btn-xs"><i class="glyphicon glyphicon-pause"></i></div>';
        $this.toggleClass('active');
        if ($this.hasClass('active')) {
            $this.html(pause);
            $('audio[id^="sound"]')[id - 1].play();
        } else {
            $this.html(play);
            $('audio[id^="sound"]')[id - 1].pause();
            $('audio[id^="sound"]')[id - 1].pause();
        }
    });

$('.aud').bind("ended",function(){
  var btn_id = $(this).attr("id").replace(/sound/,'');
  btn_id = "btn" + btn_id;
  var play = '<div class="btn btn-xs"><i class="glyphicon glyphicon-play"></i></div>';
        var pause = '<div class="btn btn-xs"><i class="glyphicon glyphicon-pause"></i></div>';
  
  
  $("#"+btn_id).toggleClass('active');
  
  if(!$("#"+btn_id).hasClass('active')){
    $("#"+btn_id).html(play);
  }
  
  
  alert("finished");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<body>
<div class="btn btn-xs" id="btn1"><i class="glyphicon glyphicon-play"></i></div>

<div class="btn btn-xs" id="btn2"><i class="glyphicon glyphicon-play"></i></div>

<div class="btn btn-xs" id="btn3"><i class="glyphicon glyphicon-play"></i></div>


<!-- SOUNDS -->
<audio id="sound1" class="aud">
    <source src="http://www.internetdj.com/mp3/108215.mp3" type="audio/mpeg" />
</audio>

<audio id="sound2" class="aud">
    <source src="http://www.bigsoundbank.com/sounds/ogg/0580.ogg" type="audio/ogg" />
</audio>

<audio id="sound3" class="aud">
    <source src="http://www.bigsoundbank.com/sounds/ogg/0003.ogg" type="audio/ogg" />
</audio>
</body>

演示:http://jsbin.com/kirifu/edit?html,js,output

关于javascript 在音频中添加 onend 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37262420/

相关文章:

c# - 事件不断引发,减慢代码速度。如何用线程处理它?

javascript - HTML javascript 选择操作

javascript - 如何在 jQuery 中保留文本区域中的换行符?

python - 为 QWidget 和派生类实现事件处理程序并避免代码重复

javascript - Electron - jQuery 错误

jquery - 当我将 IE 浏览器模式从 IE9 切换到 IE8 时,为什么会出现错误“"' Page_Validators' is undefined”?

events - 在多线程代码中使用 F# 事件和异步事件

javascript - 使用 Angular JS 将 Checked 复选框的值存储在变量中

javascript - React 如何根据 if else 条件返回标签消息

javascript - 为什么此切换功能仅在以某种方式加载元素时才起作用?