有人可以解释这种行为吗?我有一个按钮,当单击它时,我需要依次播放6个mp3文件。我正在使用onended事件处理程序:
var index;
playButton.onclick=function(){
index = 0;
conj[0].play();
conj[index].onended = function() {
if(index < conj.length){
index++;
conj[index].play();
}
};
}
在代码中使用index ++行,我尝试增加index,以便在当前音频文件播放完毕后,它播放数组conj中的下一个音频文件,依此类推,直到播放第6个和最后一个音频文件为止。数组。但是最后只能开火一次。换句话说,conj [0]播放,然后onended被触发,然后conj [1]播放,就是这样。 onended不会再次触发。 现在,当我注释掉“ index ++;”时在第一行,第一个mp3 conj [0]会被播放,并且继续播放,因此conj] [0]只是循环播放。 换句话说,onend仅在不更改index值的情况下才会触发。我知道这很愚蠢,但是我花了太多时间试图弄清楚。
答案 0 :(得分:0)
您只处理了第一个音频的“ onended”事件。
何时调用此行。
conj[index].onended = function()
索引为0。
您需要做的是做一个循环,执行这样的操作
for (var idx = 0; idx < conj.length - 1 ; idx++) {
conj[idx].onended = function() {
conj[idx+1].play();
};
}
每个音频(最后一个音频除外)的供应和处理程序显示“一旦我完成播放,就会触发下一个音频播放。”
完整示例
var index;
playButton.onclick=function(){
// sets up each audio file's onended event to play the next audio file
for (var idx = 0; idx < conj.length - 1 ; idx++) {
conj[idx].onended = function() {
conj[idx+1].play();
};
}
// start playing the first audio.
conj[0].play();
}