Javascript:onload函数调用两次

时间:2015-06-10 09:50:18

标签: javascript onload

Transition.start = function(){
    for(var j = 0; j < 6; j++)
    {
         console.log("FOR LOOP");
         (function(){
             console.log("INNER Function");
             var image = new Image();
             image.src = path + Config.imgName[j] + ".jpg";
             image.onload = function () {

                 console.log("GONE");
                 clearImages[source].push(image);
                 console.log(image);
             };
         })();
     }
}

在此控制台上“FOR LOOP”和“INNER Function”打印6次,但“GONE”打印12次。我无法弄清楚原因。我想要运行onload的主体6次。

Transition.startonDocumentKeyDown监听器调用,如此

function onDocumentKeyDown( event )
{
    if (keyPressed == 38) //up arrow
        Transition.start();
}

1 个答案:

答案 0 :(得分:7)

我得到了问题的根源。实际上每次在浏览器中呈现图像时都会调用image.onload。实际上,我一旦加载了图像,我就将它存储在clearImages中,这样如果以后图像是必需的,那么可以直接从该数组中获取,所以如果将来需要图像,那么它将从{ {1}}数组,但同样会调用onload函数。

所以我clearImages函数本身内image.onload = null解决了这个的事情