2012-04-22 2 views
1

je le code suivant (les parties pertinentes):fonction Javascript pour le feu après les images ont terminé le chargement (pas 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() { 
    //... 
} 

et je veux tirer la fonction initialise() après toutes les images ont fini de charger, mais rien que j'ai essayé a fonctionné. (Btw le alert() dans l'exemple est pour tester, et je ne comprends pas.) Pourquoi est-ce faux? D'autres méthodes pour le faire sont également appréciées.

également je ne veux pas utiliser jQuery, seulement si absolument inévitable.

Merci d'avance.

EDIT:

Ce qui suit ne fonctionne pas non plus, bien faire plus de sens:

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

Si ce n'était pas, ma suggestion serait de repenser la façon dont vous utilisez 'onload'. [Je ne pense pas] [1] vous pouvez appliquer 'onload' à une variable de type' Image'. Les variables ne sont pas chargées, elles sont initialisées. Qu'essayez-vous de faire de toute façon? –

+1

dupliquer de http://stackoverflow.com/questions/5021990/how-to-ensure-images-all-loaded-before-i-reference-in-my-html-canvas, ce qui donne une bonne réponse sans utiliser jQuery –

+0

merci, ça a beaucoup aidé ... sry pour le duplicata –

Répondre

1

imgl[img.length-1] n'existe pas, ne peut donc pas avoir une propriété "onload".

Vous initialisez img1 au début, mais ne le remplissez jamais.

En d'autres termes: img.length-1 = 3

img1[3] n'existe pas.

Je reçois le message d'erreur suivant:

Uncaught TypeError: Cannot set property 'onload' of undefined

+0

oui je vois ce que tu veux dire, j'ai essayé quelque chose que tu suggères (détaillé dans l'EDIT) mais ça ne fonctionnait toujours pas. btw son "imgL" pour chargé –

Questions connexes