Maison > Questions et réponses > le corps du texte
1. L'effet supposé est que chaque fois qu'une image est chargée, alertez "1", mais l'effet réel est qu'une fois toutes les images chargées, alertez 4 fois
2 Voici le code, aidez-moi à l'expliquer.
//imgArray[ ] Il y a 4 liens d'images ici, je ne les écrirai pas s'ils sont trop longs
var count = 0;
for (var i = 0; i < imgArray.length; i++) {
var imgobj = new Image();
imgobj.onload = function () {
alert("1");
if (count == imgArray.length - 1) {
loading.style.display = "none";
}
++count;
};
imgobj.src = imgArray[i];
}
phpcn_u15822017-05-19 10:14:08
// 这是经典闭包问题了,最简单的方法,var改成let试试
for (let i = 0; i < imgArray.length; i++) {
let imgobj = new Image();
imgobj.onload = function () {
alert("1");
if (count == imgArray.length - 1) {
loading.style.display = "none";
}
++count;
};
imgobj.src = imgArray[i];
}
仅有的幸福2017-05-19 10:14:08
Écrivez une méthode de chargement et cela se fait de manière récursive
巴扎黑2017-05-19 10:14:08
var count = 0;
for (var i = 0; i < imgArray.length; i++) {
(function(){
var imgobj = new Image();
imgobj.onload = function () {
alert("1");
if (count == imgArray.length - 1) {
loading.style.display = "none";
}
++count;
};
imgobj.src = imgArray[i];
})(i)
}
仅有的幸福2017-05-19 10:14:08
Le problème a été résolu. Il se pourrait que la photo ait été mal citée. Désolé de faire perdre du temps à tout le monde !
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQIAJgAmAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKCh Mo GhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK... légèrement....
Ce ci-dessus est l'adresse de l'image référencée, remplacez-la par la suivante et elle s'exécutera normalement,
https :/ /ss1.bdstatic .com/70cF…