2011-05-23 58 views
1

我用这样的函数从数组加载图片:运行功能时,所有的图像加载

for (var i = 0; i < images_list.length; i++) { 
      var img = new Image(); 
      img.onload = function() { 
       images_objects.push(this); 
       showImages(images_objects); 
      }; 
      img.onerror = function() { 

      }; 
      img.src = images_links[i].image_url; 
     } 

我需要什么,使正常工作是showImages功能。其目的是当images_object充满阵列中的图像时,使用jQuery显示所有加载的图像。现在它被错误地放置,只是为了让你知道我是如何尝试去做的。我想应该在加载图像后运行回调。如何更好地做到这一点?

回答

1

只需使用辅助函数来存储新加载的图像并检查是否已加载所有图像,就可以工作。

... 
img.onload = function() { 
    storeLoadedImage(this); 
}; 
... 

var storeLoadedImage = function(image) { 
    images_objects.push(image); 

    if (images_objects.length === images_list.length) { 
     showImages(images_objects); 
    } 
}; 
0

你不应该在循环中使用它。它会显示加载到第i次迭代的所有图像,而不是所有加载的图像,如果这是你想说的话。 只需添加这作为循环

if (i==images_list.length) {showImages(images_objects);} 

我明白了什么是你想要一次显示他们所有的人都被加载的第一道防线。