Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在整个父级中动态选择音频标记?_Javascript_Html_Audio_Functional Programming_Filereader - Fatal编程技术网

Javascript 如何在整个父级中动态选择音频标记?

Javascript 如何在整个父级中动态选择音频标记?,javascript,html,audio,functional-programming,filereader,Javascript,Html,Audio,Functional Programming,Filereader,我一直在尝试创建一个mp3文件播放器,它利用文件阅读器api在浏览器中上传/播放歌曲。到目前为止,一切都很好,mp3几乎完全可以正常工作 文件读取器所做的是创建一个音频标记,并将结果分配给音频标记的src值,然后创建一个通用html p标记,其中包含所读取文件的名称。如果您要上传一个despacito.mp3,它将在p标签中显示“despacito.mp3” 我想通用的html段落标签,是用来播放mp3文件,它是附加的,当它被点击。但我的问题是,除非我为每个音频标记创建一个事件侦听器,然后专门创

我一直在尝试创建一个mp3文件播放器,它利用文件阅读器api在浏览器中上传/播放歌曲。到目前为止,一切都很好,mp3几乎完全可以正常工作

文件读取器所做的是创建一个音频标记,并将结果分配给
音频标记的src
值,然后创建一个通用
html p
标记,其中包含所读取文件的名称。如果您要上传一个despacito.mp3,它将在
p标签中显示“despacito.mp3”

我想通用的html段落标签,是用来播放mp3文件,它是附加的,当它被点击。但我的问题是,除非我为每个音频标记创建一个事件侦听器,然后专门创建一个对所选音频使用.play方法的函数,否则我无法专门针对每个音频文件 我想要普通的ht

我的代码很邋遢,对此我深表歉意,我已经把它全部放在一个html文件中,样式标记也放在html中

我还没有一个错误功能,所以如果你上传一个.mp3文件以外的任何东西,它仍然会将它附加到音频标签上

**HTML

        <body>
          <header>
            <h1>JukeBox</h1>
            <input type = 'file' id='check'>
          </header>
          <div id="container">
          </div>
          <div class = 'control'>
            <div class ='icons'>
              <div class='flex'>
                <div class='pack'>
                  <i class="fas fa-random" id="random"></i>
                </div>
                <div class='pack'>
                  <i class="fas fa-step-backward"></i>
                  <button id="playButt">
                    <i class="fas fa-play"></i>
                  </button>
                  <button id="pauseButt">
                  <i class="fas fa-pause"></i>
                  </button>
                  <i class="fas fa-step-forward"></i>
                </div>
                <div class='pack'>
                  <i class="fas fa-volume-up"></i>
                </div> 
              </div>
              <span id="current"></span>
              <input type="range" id="seekBar" value="0">
              <span id="duration"></span>
            </div>
          </div>
    </body>

JS

     var z = document.getElementById("check");
      z.addEventListener('change', function() {
        const reader = new FileReader()
        reader.onload = function() {
           var result = reader.result; 
         
         
            rest(result)
        }
        function rest(param){
            var audioPlayer = new Audio(param);
            child.appendChild(audioPlayer);
            console.log(audioPlayer);
        }
      
        reader.readAsDataURL(z.files[0])
        //child container
        let child = document.createElement('div');
        child.classList.add('items');
        //overall parent
        let parent = document.getElementById('container');
        parent.appendChild(child);
        let paragraph = document.createElement('p');
        paragraph.innerHTML = z.files[0].name
        child.appendChild(paragraph)
      })

css

    * {
            padding: 0px;
            margin: 0px;
          box-sizing:border-box;
        }
        body{
            background-color: #1F305E;
        }
        h1 {
        text-align:center;
        color:white;
        margin-bottom:15px;
        }
      #container {
        width:600px;
        margin:0 auto;
      }
      input{
          color: white;
      }
      .items {
            border:1px solid    #6CB4EE;
    
        padding:20px;
        margin-bottom:15px;
        cursor:pointer;
        color:white;
      }
      .items:hover {
         color: rgba(108, 180, 238);
         box-shadow: 0 5px 15px rgba(145, 92, 182, .4);
      }
      
      .control {
        border:1px solid #696969;
        background:#696969;
        width:100%;
      }
      .icons {
        text-align:center;
        max-width:600px;
        margin:0 auto;    
      }
      i {
        color:white;
        font-size:25px;
        cursor:pointer;
      }
      .flex{
        display:flex;
        justify-content:space-evenly;
      }
      p {
        color:white;
      }
      header{
        text-align:center;
        margin-bottom:30px;
      }
      #seekBar {
        width: 50%;
      }
      #pauseButt {
        display: none;
      }
      i {
        color: black;
      }
     button{
       padding: 0px;
       border: none;
       background: none;
       outline: none;
     }
**HTML
自动点唱机
JS
var z=document.getElementById(“检查”);
z、 addEventListener('change',function(){
const reader=new FileReader()
reader.onload=函数(){
var result=reader.result;
休息(结果)
}
函数rest(param){
var audioPlayer=新音频(参数);
儿童。儿童(音频播放器);
控制台日志(音频播放器);
}
reader.readAsDataURL(z.files[0])
//子容器
让child=document.createElement('div');
child.classList.add('items');
//整体父母
让parent=document.getElementById('container');
父、子(子);
让段落=document.createElement('p');
段落.innerHTML=z.files[0]。名称
儿童.儿童(第段)
})
css
* {
填充:0px;
边际:0px;
框大小:边框框;
}
身体{
背景色:#1F305E;
}
h1{
文本对齐:居中;
颜色:白色;
边缘底部:15px;
}
#容器{
宽度:600px;
保证金:0自动;
}
输入{
颜色:白色;
}
.项目{
边框:1px实心#6CB4EE;
填充:20px;
边缘底部:15px;
光标:指针;
颜色:白色;
}
.项目:悬停{
颜色:rgba(108180238);
盒影:0 5px15px rgba(145,92,182,4);
}
.控制{
边框:1px实心#6969;
背景#6969;
宽度:100%;
}
.图标{
文本对齐:居中;
最大宽度:600px;
保证金:0自动;
}
我{
颜色:白色;
字体大小:25px;
光标:指针;
}
.flex{
显示器:flex;
对正内容:空间均匀;
}
p{
颜色:白色;
}
标题{
文本对齐:居中;
边缘底部:30px;
}
#西格巴{
宽度:50%;
}
#波塞布特{
显示:无;
}
我{
颜色:黑色;
}
钮扣{
填充:0px;
边界:无;
背景:无;
大纲:无;
}