2012-04-22 79 views
1

我有以下代碼(相關部分):JavaScript函數火(無jQuery的)

window.addEventListener("load", loadImages, false); 

var imgl = new Array(); 

function loadImages() { 
    var img = [ 
     "img1", 
     "img2", 
     "img3", 
     "etc" 
    ]; 
    imgl[img.length-1].onload = function() { 
     alert(); 
     initialise(); 
    } 
    for (i = 0; i < img.length; i++) { 
     imgl[img[i]] = new Image(); 
     imgl[img[i]].src = "img/"+img[i]+".png"; 
    } 
} 

function initialise() { 
    //... 
} 

,我想火initialise()功能後,所有圖像都加載完畢,但我沒有嘗試過。 (在這個例子中,alert()是用於測試的,我沒有得到它。)爲什麼這是錯誤的?也讚賞其他方法。

也我不想使用jQuery,只有當絕對不可避免。

在此先感謝。

編輯:

下也不管用,雖然使得更多的意義:

for (i = 0; i < img.length; i++) { 
     imgl[img[i]] = new Image(); 
    } 
    imgl[imgl.length-1].onload = function() { 
     initialise(); 
    } 
    for (i = 0; i < img.length; i++) { 
     imgl[img[i]].src = "img/"+img[i]+".png"; 
    } 
+0

如果不是它,我的建議是重新考慮你使用'onload'的方式。 [我不認爲] [1]你可以將'onload'應用於'Image'類型的變量。變量未加載,它們已初始化。無論如何,你想做什麼? – 2012-04-22 16:35:15

+1

http://stackoverflow.com/questions/5021990/how-to-ensure-images-all-loaded-before-i-reference-in-my-html-canvas的副本,它給出了一個很好的答案,而不使用jQuery – 2012-04-22 17:16:15

+0

謝謝,它幫助了很多...爲重複而努力 – 2012-04-22 17:22:17

回答

1

imgl[img.length-1]不存在,因此不能有一個 「的onload」 屬性。

您在開頭初始化img1,但從不填充它。

換句話說: img.length-1 = 3

img1[3]不存在。

我收到以下錯誤信息:

Uncaught TypeError: Cannot set property 'onload' of undefined

+0

是的,我明白你的意思了,我嘗試了一些你建議的東西(在EDIT中詳細說明),但它仍然沒有工作。順便說一句,它的「imgL」爲加載 – 2012-04-22 15:59:53