Javascript 如何动态地执行此操作?

Javascript 如何动态地执行此操作?,javascript,loops,for-loop,Javascript,Loops,For Loop,我正在以这种方式编写代码,但我想在循环中完成。我想要有活力。我怎么做 $("#sound-player").attr("src",secilen[0]); var x = document.getElementById("sound-player"); x.play(); x.onended = function() { $("#sound-player").attr("src",secilen[1]); var x = document.getElementById("sound-pl

我正在以这种方式编写代码,但我想在循环中完成。我想要有活力。我怎么做

$("#sound-player").attr("src",secilen[0]);
var x = document.getElementById("sound-player");
x.play();
x.onended = function() {
  $("#sound-player").attr("src",secilen[1]);
  var x = document.getElementById("sound-player");
  x.play();
  x.onended = function() {
    $("#sound-player").attr("src",secilen[2]);
    var x = document.getElementById("sound-player");
    x.play();
    x.onended = function() {
      $("#sound-player").attr("src",secilen[3]);
      var x = document.getElementById("sound-player");
      x.play();
      x.onended = function() {
        alert("bitti");
      }
    }
  }
}
您可以使用递归:

/*缓存播放器*/
var x=document.getElementById(“声音播放器”);
/*创建一个iLife并递归地执行它*/
(函数递归播放(当前、最后){
x、 src=安全[当前];
x、 play();
x、 onended=函数(){
/*如果当前不是最后一个,则播放下一个*/
如果(当前<上次)以递归方式播放(++当前,上次);
else警报(“bitti”);
};
})(0,secilen.length-1);

重用变量
x
,而不是重新定义它

var player = document.getElementById('sound-player');
var i = 0;

function playSource(src){
    // change the src attribute and play.
    if (secilen[scr] !== undefined) {
        player.setAttribute('src', secilen[src]);
        player.play();
    }
    else {
        alert('bitti')
    }
}

player.onended = function(){
    i++;
    playSource(i);
}

playSource(i); //start playing the first sound