javascript - Javascript:音频播放器出现问题,同时播放所有音频

标签 javascript audio ejs

我正在尝试使此定制音频播放器正常工作。问题是,当我按下某个mp3播放器的播放按钮时(应该从阵列中播放单个mp3文件),它会同时播放阵列中的所有歌曲。所有其他迷你mp3播放器都会发生这种情况。
下面是.ejs文件,其中我为数组中的每首歌曲制作了一个mp3对象

  <div class="container" id="mainBody">
   <div class="row text-center" style="display:flex; flex-wrap:wrap;">
    <% songs.forEach(function(song){%>
        <div class="col-md-4 col-sm-6">
            <div class="thumbnail">
                <div class="player">
                    <!--<div class="pl"></div>-->
                    <!--<div class="title"></div>-->
                    <div class="cover"></div>
                    <div class="bottom_section">
                        <div class= "controls">
                            ...play buttons go here...

                            ..js mp3 js file goes here right after..

我使用带有类播放器(div =“player”)的每个对象的js脚本的方法,将数组中的每一首歌曲声明为一个音轨。奇怪的是,每个脚本在这些对象下都有各自独立的音轨。但是,当我单击任一播放器上的“播放”时,它将立即播放所有文件。
                 <% if(song) { %>
                        <script type="text/javascript">

                            $(document).ready(function(){
                                $(".player").each(function(index){
                                    var track = new Audio();
                                    track.src="<%=song%>";

                                    $(".mainB").click(function(){
                                        if(track.paused){
                                            track.play();
                                            $(this).toggleClass('fa fa-play fa fa-pause');
                                        }
                                        else{
                                            track.pause();
                                            $(this).toggleClass('fa fa-pause fa fa-play');
                                        }
                                    });
                                });
                            });

                        </script>
                    <% } %>

我不太确定自己在做什么错。如果有人有任何提示或建议,我将不胜感激!

最佳答案

可以使用CSS创建音频元素并设置控件样式。 (如果要进一步自定义控件,请删除控件属性并添加自己的html控件,然后使用JS对其进行控制)

$(document).ready(function() {
  $(".player").each(function(i, el) {
    var track = document.createElement('audio');
    track.id = 'audio-player';
    track.controls = 'controls';
    track.src = '<%=song%>';
    track.type = 'audio/mpeg';
    el.appendChild(track);
  });
});

关于javascript - Javascript:音频播放器出现问题,同时播放所有音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53112094/

相关文章:

javascript - Contenteditable 添加带有事件的内容而不替换

c++ - 我的游戏引擎的FMOD音频

python - 使用 python 检查音频采样率

ios - 如何快速显示计量值?

node.js - EJS - 将新行转换为 <br/> 并保持内容编码

node.js - EJS-将多个单词作为值添加到搜索栏

javascript - 根据参数注入(inject)正确的服务

javascript - 需要完整的子目录,带有 grunt-neuter

node.js - 你能在 ejs 文件中使用 vue.js 吗?

javascript - document.createElement() 创建未封闭的标签?