Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.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 HTML5音频通过不同来源不断循环_Javascript_Html_Audio - Fatal编程技术网

Javascript HTML5音频通过不同来源不断循环

Javascript HTML5音频通过不同来源不断循环,javascript,html,audio,Javascript,Html,Audio,你好,我很难在不同的音频播放器中循环播放。我尝试过各种各样的方法,从我认为很优雅的方法开始:在一个播放器上切换src,然后加载新的src并播放。每次它都不起作用,所以我的修改变得更粗糙了,现在我要尝试4个独立的音频播放器,我所关心的就是让这该死的东西起作用 var ear = document.getElementById('ear'), ogg = document.getElementById('ogg'), mp3 = document.getElementById('mp

你好,我很难在不同的音频播放器中循环播放。我尝试过各种各样的方法,从我认为很优雅的方法开始:在一个播放器上切换src,然后加载新的src并播放。每次它都不起作用,所以我的修改变得更粗糙了,现在我要尝试4个独立的音频播放器,我所关心的就是让这该死的东西起作用

var ear = document.getElementById('ear'),
    ogg = document.getElementById('ogg'),
    mp3 = document.getElementById('mp3'),
    sounds = ['laughing', 'gull', 'reel', 'snore'],
    counter = 0,
    loop = 0,
    activate = 0,
    p = document.getElementsByTagName('p')[0];

function loopPrep(){
   audio.remove();
   for (var i = 0; i < sounds.length; i++) {
            var elem =
                        "<source id='ogg' src=media/"+sounds[i]+".ogg type='audio/ogg'>"+
                        "<source id='mp3' src=media/"+sounds[i]+'.mp3 type="audio/mpeg">';
           var temp = document.createElement('audio');
           document.getElementsByTagName('body')[0].appendChild(temp);
           var a = document.getElementsByTagName('audio')[i];
           a.innerHTML=elem;
       }; 
        document.getElementsByTagName('audio')[0].addEventListener('onended', function(){ document.getElementsByTagName('audio')[1].play(); });  
      document.getElementsByTagName('audio')[1].addEventListener('onended', function(){  document.getElementsByTagName('audio')[2].play(); });
      document.getElementsByTagName('audio')[2].addEventListener('onended', function(){  document.getElementsByTagName('audio')[3].play(); });
      document.getElementsByTagName('audio')[3].addEventListener('onended', function(){ document.getElementsByTagName('audio')[0].play(); });
       document.getElementsByTagName('audio')[0].play();
              };


function playNext(){
    if (counter == 3){
        loop = 1; activate = 1; loopPrep();
    } else { counter++; };
    ogg.setAttribute('src', 'media/'+sounds[counter]+".ogg");
    mp3.setAttribute('src', 'media/'+sounds[counter]+".mp3");
}
var ear=document.getElementById('ear'),
ogg=document.getElementById('ogg'),
mp3=document.getElementById('mp3'),
声音=[“笑”、“鸥”、“卷轴”、“鼾声”],
计数器=0,
循环=0,
激活=0,
p=document.getElementsByTagName('p')[0];
函数loopPrep(){
audio.remove();
for(var i=0;i“我意识到我的事件侦听器是‘oned’,应该是‘end’。oned用于内联html执行


是时候回去用一个音频播放器重写它了,然后切换src和load and play。

找到了答案-我在为我的事件侦听器编写onended而不是end。这从一开始就是问题所在。不过要注意ID。你使用多个音频元素的想法是最好的,除非你真的需要在页面中显示原始读取器。某些UAs不缓存音频媒体,因此如果您更改单个音频元素的src,它们将对文件进行新调用。此外,每次尝试使用变量而不是调用DOM方法(
getElementsByTagName
getElementById
)啊,是的,你说得对,我应该把它们向上移动到循环中,并使用缓存的var