我创建了一个调用图像 URL 数组的 javascript 函数。在此之后,它遍历每个并每三秒更改一次图像标签的 src。整个功能让我有点难过。出于某种原因,它只有在我取消注释警告框时才有效。
alert( index + ": " + value );
起初我认为这可能是该功能正在运行的标志,但如果没有警报,它运行得太快,我看不到,但我添加了一个 settimeout,并在一些图像不存在的实例上运行它只是为了检查它是否会记录一个 404,它只在未注释警报的情况下记录。 这是该函数的完整代码,其中包括警报。
function displayGalleryImages(pid){
var images = imageArray[pid]; //array of urls
jQuery.each(images, function( index, value ) {
// alert( index + ": " + value );
setTimeout(function(){ jQuery("#"+pid).attr("src", value) },3000);
});
}
我知道这不仅仅是一个评论警报,但我正在努力寻找我哪里出错了。 如果有人能发现代码中的错误或者更好的方法来完成该功能的任何方面,我将非常感激。
最佳答案
它正在发生,因为您在循环内使用 setTimeout()
。
当您编写 alert
时,浏览器将等待您的操作,因此它会起作用。
试试这个:
var len = images.length;
iterate_img(0);
function iterate_img(num){
setTimeout(function(){
jQuery("#"+pid).attr("src", value);
if(num < len-1){
iterate_img(num+1);
}
},3000);
}
我用过递归函数。
希望对你有帮助。
关于Javascript 函数仅在取消注释 alert() 时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19657381/