Javascript 按顺序播放音频文件不起作用

Javascript 按顺序播放音频文件不起作用,javascript,jquery,audio,Javascript,Jquery,Audio,在英语/泰语网页中,我有4列英语短语和相关音频文件。鼠标单击可从每列中选择一个短语。选择4个短语后,我希望它们的音频文件按顺序播放。下面是进行选择的4段代码中的1段(它们仅在html标记选择和本地存储位置上有所不同) var audioIsPlaying = false; jQuery("div#wh_set1").on("click", "p span", function (evnt) { var elementId = evnt.target.id, word1 =

在英语/泰语网页中,我有4列英语短语和相关音频文件。鼠标单击可从每列中选择一个短语。选择4个短语后,我希望它们的音频文件按顺序播放。下面是进行选择的4段代码中的1段(它们仅在html标记选择和本地存储位置上有所不同)

var audioIsPlaying = false;

jQuery("div#wh_set1").on("click", "p span", function (evnt) {      
  var elementId = evnt.target.id,
  word1 = jQuery(this).text();
  jQuery("span#word1").html(word1);                
    var pathVar = document.getElementById("pathVar").innerHTML,
       oggVar = pathVar+elementId+".ogg",
       mp3Var = pathVar+elementId+".mp3";
       if(Modernizr.audio.ogg) {
         localStorage.setItem("wh_set1", oggVar);
      }else {
        localStorage.setItem("wh_set1", mp3Var);
    }
 });
音频文件的顺序播放拟由以下代码处理:

var currentAudio  = document.createElement('audio'),  i ;  
function audioPlay(i)  {
  audioIsPlaying = false;
  currentAudio.setAttribute("src", localStorage.getItem('wh_set' + i));
  currentAudio.load();
  currentAudio.play();
  audioIsPlaying = true;
//    alert("wh_set" +i);                                                        
}
for(i = 1; i <= 4; i++) {
  currentAudio.addEventListener("ended", audioPlay(i));
}  
var currentAudio=document.createElement('audio'),i;
功能性音频播放(一){
音频播放=假;
currentAudio.setAttribute(“src”,localStorage.getItem('wh_set'+i));
currentAudio.load();
currentAudio.play();
音频播放=真;
//警报(“wh_set”+i);
}

对于(i=1;i而言,问题在于:您没有将函数添加到事件结束,而是立即调用它。 您的代码可以执行以下操作:

audioPlay(1);
audioPlay(2);
audioPlay(3);
audioPlay(4);
前三个音频没有机会加载和启动

我换了

for(i = 1; i <= 4; i++) {
  currentAudio.addEventListener("ended", audioPlay(i));
}  

for(i=1;i Hi Vassily,正如您所说,它工作得非常完美。太好了,非常感谢。一个小型的mod.audioPlay(1)到audioPlay(i)
 var i = 1;
    currentAudio.addEventListener( "ended", function() {
      i++;
      if ( i < 5 ) {
        audioPlay( i );
      }
    } );
  audioPlay( 1 );