JQuery-for循环中的loadedmetadata侦听器
我正在尝试创建一个循环,以获取从jQuery中的数组中获取的不同音频曲目的持续时间。似乎在循环中添加事件侦听器会覆盖for的第二条语句,从而无限循环并导致浏览器崩溃 代码如下:JQuery-for循环中的loadedmetadata侦听器,jquery,html,loops,audio,listener,Jquery,Html,Loops,Audio,Listener,我正在尝试创建一个循环,以获取从jQuery中的数组中获取的不同音频曲目的持续时间。似乎在循环中添加事件侦听器会覆盖for的第二条语句,从而无限循环并导致浏览器崩溃 代码如下: var trackSources = new Array(); trackSources[0] = "music/haken.mp3"; trackSources[1] = "music/Drive home.mp3"; trackSources[2] = "music/Luminol.mp3"; var audioP
var trackSources = new Array();
trackSources[0] = "music/haken.mp3";
trackSources[1] = "music/Drive home.mp3";
trackSources[2] = "music/Luminol.mp3";
var audioPlaylist = document.createElement("audio");
audioPlaylist.preload = "metadata";
function getDurations() {
var max = trackSources.length;
for (var i=0; i < max ; )
{
audioPlaylist.src = trackSources[i];
audioPlaylist.addEventListener('loadedmetadata', function() {
trackDuration= audioPlaylist.duration;
alert(trackDuration);
i++;
}, false);
}
}
var trackSources=new Array();
trackSources[0]=“music/haken.mp3”;
trackSources[1]=“music/Drive home.mp3”;
trackSources[2]=“music/Luminol.mp3”;
var audioPlaylist=document.createElement(“音频”);
audioPlaylist.preload=“元数据”;
函数getDurations(){
var max=trackSources.length;
对于(变量i=0;i
有办法解决吗?谢谢 您可以尝试以下方法:
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
var trackSources = new Array();
trackSources[0] = "music/haken.mp3";
trackSources[1] = "music/Drive home.mp3";
trackSources[2] = "music/Luminol.mp3";
var trackDuration = new Array();
var audioPlaylist = document.createElement("audio");
audioPlaylist.preload = "metadata";
var i = 0;
function getDurations() {
console.log('getDurations called');
var arraySize = trackSources.length;
if(i < arraySize){
$(audioPlaylist)[0].src = trackSources[i];
$(audioPlaylist).on('loadedmetadata',function(){
trackDuration[i]= $(audioPlaylist)[0].duration;
console.log('Track '+i+' - duration: '+trackDuration[i]+' seconds');
i++;
$(this).off('loadedmetadata');
getDurations();
});
}
}
getDurations();
</script>
var trackSources=新数组();
trackSources[0]=“music/haken.mp3”;
trackSources[1]=“music/Drive home.mp3”;
trackSources[2]=“music/Luminol.mp3”;
var trackDuration=新数组();
var audioPlaylist=document.createElement(“音频”);
audioPlaylist.preload=“元数据”;
var i=0;
函数getDurations(){
log('getDurations called');
var arraySize=trackSources.length;
如果(i
附带说明:您提到了jQuery,但您的问题代码是纯JS