javascript - 音频播放器 - 一次仅播放一首轨道,不起作用

标签 javascript html audio-player

我有一个带有多个轨道的简单音频播放器。用户可以选择一首他们喜欢引用的轨道。玩家基本都在工作。但是,我只想一次只播放一首轨道,这是行不通的。

这是我所做的

HTML 音频播放器

<div class="audioplayer">
  <div class="md-col-4">
    <input type="radio" name="track" class="track1" id="track1" value="1" checked="checked">
    <label for="track1" class="track1 selected">
        <div class="audiotrack">
            <div class="info">
               <h5>In this world</h5>
               <p>Gramatik</p>
            </div>
            <audio src="/media/gramatik.mp3" class="audio-player" preload="auto"></audio>

            <div class="playpause" data-state="play"></div>
            <div class="progressbar"></div>
        </div>
     </label>
   </div>

  <div class="md-col-4">
    <input type="radio" name="track" class="track2" id="track1" value="2" checked="checked">
    <label for="track2" class="track2">
        <div class="audiotrack">
            <div class="info">
               <h5>Stars</h5>
               <p>Tom Hank</p>
            </div>
            <audio src="/media/looseyourself.mp3" class="audio-player" preload="auto"></audio>

            <div class="playpause" data-state="play"></div>
            <div class="progressbar"></div>
        </div>
     </label>
   </div>
</div>

JS

$('.audioplayer label').on('click', function(e){
    e.preventDefault();
    var labelid = $(this).attr('for').toString();
    $('.selected').removeClass('selected');
    $('input:radio[id='+labelid+']').prop('checked', true);
    console.log($('input:radio[id='+labelid+']').prop('checked', true));
    $(this).addClass('selected');

    var btn = $(this).find(".playpause");
    var audio = btn.siblings('audio');

    var progress= btn.siblings(".progressbar");
    if(!btn.hasClass("playing")){
      btn.addClass("playing");
      audio.get(0).play();
        var playertime = setInterval(function(){
        var c = audio.get(0).currentTime;
        var d = audio.get(0).duration;
        progress.css("width", (c/d)*100 +'px' );
      }, 300);
    }
    else{
      btn.removeClass("playing");
      audio.get(0).pause();
      clearInterval(playertime);
    }
});

我在这里缺少什么? 谢谢

最佳答案

你可以做这样的事情

var audio = btn.siblings('audio');
//I wouldn't recommend but this is a way to do it.
$('audio').each(function(){
    console.log('audio');
    this.pause();
});    
var progress= btn.siblings(".progressbar");

关于javascript - 音频播放器 - 一次仅播放一首轨道,不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26116766/

相关文章:

javascript - 在窗口调整大小时移动内容

javascript - 如何通过鼠标点击和拖动 Javascript 来滚动图像

javascript - 在 featherlight 灯箱打开和关闭时运行代码,如回调

javascript - 更新多个垂直条

javascript - 使用 howler.js 和 meteor 框架播放/暂停

c# - 如何删除 WP7 锁定屏幕上的音量控制?

javascript - react 查询:如果出现错误,请勿按时间间隔重新获取

html - 我想在侧边栏 div 下显示列表

html - 页脚 div 隐藏在内容 div 后面

ios - cocoa touch 保存播放列表