Javascript 函数仅在取消注释 alert() 时有效

标签 javascript jquery

我创建了一个调用图像 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/

相关文章:

javascript - 我如何在 angularjs promise 中解析这个结果

jquery - React 有像 jQuery 那样的滚动动画吗?

javascript - 简单的 jQuery 函数调用不起作用

javascript - 使用 jQuery 将 Feb 17, 2012 转换为 17/02/2012

javascript - 如何让 lodash 与 Angular JS 一起工作?

javascript - HTML5 Canvas : How to handle mousedown mouseup mouseclick

javascript - div点击调用函数

javascript - 导航菜单的不自然移动

用于从组合框中获取选定值的 JavaScript 代码

javascript - 纯 Javascript - 在 cookie 中存储对象