2016-03-08 1 views
1

Je charge 52 images partageant la même classe, lorsque j'imprime les images chargées sur la console, la quantité d'images qui sortent change chaque fois que je rafraîchis.Charger toutes les images à l'intérieur d'une classe

La sortie désirée serait de charger chaque image dans la classe, comme je suis en train de suivre la progression avec une barre de progression puis d'afficher la galerie d'images.

var thumbs = document.getElementsByClassName("thumbImg"); 
var thumbTotal = thumbs.length; 
console.log("number of thumbImg's = ", thumbTotal); 

$(".thumbImg").on("load", function() { 
    console.log("the following has loaded = ",this); 
}); 

Ceci affiche les informations suivantes montrant la quantité aléatoire d'images chargées.

1/2

2/2

+0

Vous ne savez pas si cela aide, mais getElementsByClassName renvoie une liste de nœuds «en direct». Cela signifie qu'il ne fait pas de requête pour les noeuds au point de l'appel getElementsByClassName. Il interroge chaque fois que vous faites référence à la liste de nœuds renvoyée par l'appel. Cela vous permet de toujours avoir une liste de nœuds qui représente les nœuds actuels qui correspondent au nom de la classe, même si de nouveaux nœuds ont été ajoutés APRÈS l'appel initial. Essayez de changer le nom getElementsByClass en querySelectorAll ("theClassName"). –

Répondre

3

peut être dû à la mise en cache du navigateur. Vous pouvez essayer de vérifier la propriété .complete de chaque image et exécuter le code immédiatement s'il est déjà terminé.

$(".thumbImg").each(function(i, el) { 
    if (el.complete) { 
    handler.call(el); 
    } else { 
    $(el).on("load", handler); 
    } 
}) 

function handler() { 
    console.log("the following has loaded = ",this); 
} 
+0

Merci, je n'avais pas pensé à la mise en cache du navigateur. Pouces vers le haut! – esd

+0

De rien. –