我有一个数组的音频文件,我想要播放时,我点击一个按钮。如果我单击上述按钮,它将在数组中播放下一个音频文件。此外,如果用户再次单击时正在播放音频,则重置当前音轨并播放下一首歌曲。
试图找出为什么我不能循环我目前拥有的数组。
var song1 = $("#sound-1");
var song2 = $("#sound-2");
var song3 = $("#sound-3");
var song4 = $("#sound-4");
var song5 = $("#sound-5");
var song6 = $("#sound-6");
var song7 = $("#sound-7");
var song8 = $("#sound-8");
var audioArray = [ song1, song2, song3, song4, song5, song6, song7, song8 ];
$(".click").click(function(){
var i=0;
if (i< audioArray.length){
audioArray[i].trigger('play');
i++;
} else if ( i>audioArray.length){
i = 0;
audioArray[i].trigger('play');
};
});
发布于 2016-08-11 14:41:47
最新答案:
由于您使用的是本机HTML5接口,所以也可以触发一个pause
事件。不幸的是,没有任何stop
事件会重置时间,但是我们可以使用currentTime
属性手动将其设置为0
。
var i=0;
var lastPlayedFile = null;
$(".click").click(function(){
if(lastPlayedFile !== null) {
lastPlayedFile[0].currentTime = 0; // [0] because we need a native DOM element, not a jQuery-wrapped one
lastPlayedFile.trigger('pause');
}
if (i< audioArray.length){
lastPlayedFile = audioArray[i];
audioArray[i].trigger('play');
i++;
} else if (i>=audioArray.length){ // there was a missing '=' in this condition to work properly
i = 0;
lastPlayedFile = audioArray[0];
audioArray[i].trigger('play');
};
});
原来的答案:
将i
的声明移到click
处理程序之外。
var i=0;
$(".click").click(function(){
if (i< audioArray.length){
audioArray[i].trigger('play');
i++;
} else if ( i>audioArray.length){
i = 0;
audioArray[i].trigger('play');
};
});
每次用户单击该按钮时,您都会将其值重置为0。
https://stackoverflow.com/questions/38899395
复制相似问题