2012-04-22 9 views
1

I次のコード(関連部分)があります。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を使用したくありません。

ありがとうございます。

EDIT:

次は、より多くの意味を作るものの、いずれかの動作しません:

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'型の変数に適用することができます。変数はロードされず、初期化されます。とにかく何をしようとしていますか? –

+1

jQueryを使用せずに良い答えを与えるhttp://stackoverflow.com/questions/5021990/how-to-ensure-images-all-loaded-before-i-reference-in-my-html-canvasの複製 –

+0

ありがとう、それは多くを助けた...重複のために叫ぶ –

答えて

1

imgl[img.length-1]したがって、 "オンロード" プロパティを持つことができない、存在しません。

最初にimg1を初期化しますが、決してそれを設定しないでください。すなわち

img.length-1 =

img1[3] 3は存在しません。それはそれでなかった場合

Uncaught TypeError: Cannot set property 'onload' of undefined

+0

はい私はあなたが何を意味するかを見て、私はあなたが提案している(EDITで詳述)何かを試みたが、まだdidn1t仕事。その "imgL"をロードしてください –