Heim > Fragen und Antworten > Hauptteil
1. Der angenommene Effekt ist, dass jedes Mal, wenn ein Bild geladen wird, eine Warnung „1“ ausgegeben wird, aber die tatsächliche Wirkung ist, dass nach dem Laden aller Bilder viermal eine Warnung ausgegeben wird. Das Folgende ist der Code, bitte helfen Sie mir, ihn zu erklären.
//imgArray[ ] Hier gibt es 4 Bildlinks, ich werde sie nicht schreiben, wenn sie zu lang sind
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
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
问题已经解决,应该是图片引用的不对.抱歉浪费各位大神的时间了!
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQIAJgAmAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK...略....
上面是引用的图片地址,改成下面的就正常执行了,
https://ss1.bdstatic.com/70cF...