小编Red*_*lar的帖子

函数调用本身不起作用(无限循环,Javascript)

我正在尝试等待,然后在数组中的所有图像都已完成加载(使用.complete)时收到消息,根据此处的答案.因此我设置了如下的无限循环.但是,当我运行这个时,我得到一个错误,即没有定义checkForAllImagesLoaded().这段代码正在通过书签运行,因此它全部包含在一个匿名函数结构中(如下所示).如果我在该构造之外重新定义我的函数和变量,它就可以工作.但这似乎是编写bookmarklet的一种糟糕方式.我怎样才能解决这个问题,以便在setTimeout之后仍能识别该函数?

(function() {

    //var images = array of images that have started loading

    function checkForAllImagesLoaded(){
        for (var i = 0; i < images.length; i++) {
            if (!images[i].complete) {
               setTimeout('checkForAllImagesLoaded()', 20);
               return;
            }
        }
    }

    checkForAllImagesLoaded();

})();
Run Code Online (Sandbox Code Playgroud)

javascript function definition callback anonymous-function

8
推荐指数
1
解决办法
4067
查看次数