Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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_Jquery_Html_Audio - Fatal编程技术网

Javascript 获取当前播放的<;音频>;包含多个音频文件的页面上的文件

Javascript 获取当前播放的<;音频>;包含多个音频文件的页面上的文件,javascript,jquery,html,audio,Javascript,Jquery,Html,Audio,我在一个页面上有多个音频文件,我希望通过JQuery获得播放音频文件 这是我尝试过的,但只得到了第一个: var audio = document.querySelector('audio'); audio.addEventListener('play', function() { console.log($(this)); }); 我是否可以只获取当前正在播放的页面上的音频文件?解决此问题的一种方法是查询文档中的所有音频元素,然后对这

我在一个页面上有多个音频文件,我希望通过JQuery获得播放音频文件

这是我尝试过的,但只得到了第一个:

 var audio = document.querySelector('audio');
      audio.addEventListener('play', function() { 
        console.log($(this));            
 });

我是否可以只获取当前正在播放的页面上的音频文件?

解决此问题的一种方法是查询文档中的所有音频元素,然后对这些元素进行迭代,以找到
ispasued
不真实的第一个实例:

function getCurrentlyPlayingAudio() {

  for(const audio of document.querySelectorAll('audio')) {

    if(!audio.paused) {
      return audio;
    } 
  }  

  // return undefined if no such audio element found
}
此解决方案使用本机方法查询音频元素,因此不依赖于jQuery

要在音频元素开始播放后查询“当前播放音频元素”,可以按以下方式使用建议的方法:

document.querySelectorAll('audio').forEach(audio => {

    audio.addEventListener('play', () => {

        const currentPlaying = getCurrentlyPlayingAudio();
        console.log('current playing audio:', currentPlaying);
    });
});
谢谢

我也改变了我原来的答案,这起了作用

var audList = document.getElementsByTagName("audio");

      for (var i = 0; i < audList.length; i++) {
          audList[i].addEventListener("play", onPlay, false);
          audList[i].addEventListener("ended", onEnded, false);
      }
      function onPlay(e) {
          console.log(e.target.id + " Well hello there!");
          console.log($(this));

      };
      function onEnded(e) {
          console.log(e.target.id + " Left this audio.");
      };
var audList=document.getElementsByTagName(“音频”);
对于(变量i=0;i
谢谢,不幸的是,当我播放音频时,此功能无法运行。我希望每次播放音频时都能运行此功能,我应该能够获得播放元素。@Steve不客气-只是扩展了答案。这有用吗?谢谢。我也改变了我原来的答案,这起了作用。不过我接受你的回答。谢谢。