由于.onload中异步执行的特性,Javscript不会按代码中显示的顺序运行。我从how to alert after all images loaded?中学到的摘录内容始终无法正常工作,在此处传递并在那里失败,所有这些都取决于浏览器执行的顺序。有什么建议怎么解决呢? (请不要使用jQuery,也不要问我为什么)

var imgLoaded = 0;
var imgToLoad = 10;
var onImgLoad = function()
{
   imgLoaded++;
   if(imgLoaded == imgToLoad)
   {
      alert("done");             //Call to our draw function
   }
}

for(var i = 0; i < 10; i++)
{
  images[i] = new Image();
  images[i].onload = onImgLoad;
  images[i].src = 'images/'+i+'.png';
}


具体来说,这是代码失败的地方:

   imgLoaded++;
   if(imgLoaded == imgToLoad) { }


结果,即使校正了所有图像,有时IF条件下的代码也可能无法执行。

最佳答案

看到这个小提琴:http://jsfiddle.net/wdBbX/

var images = [];

function loadImages(callBack)
{
    var imgLoaded = 0;
    var imgToLoad = 10;

    var onImgLoad = function()
    {
          imgLoaded++;
          if(imgLoaded == imgToLoad)
          {
               callBack(imgLoaded);             //Call to our draw function
          }
    }

    for(var i = 0; i < 10; i++)
    {
          images[i] = new Image();
          images[i].onload = onImgLoad;
          images[i].src = 'images/'+i+'.png';
    }
}

loadImages(function(i){
    alert(i);
});

关于javascript - 如何检查所有图像是否已加载? (请不要使用jQuery),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18723555/

10-13 04:23