您好,并预先感谢您对这个难题的帮助!
我在globalMaxW
函数中设置$.imgpreload()
时遇到问题。
在console.log(globalMaxW);
函数之后调用时,0
返回$.imgpreload()
,而在$.imgpreload()
函数内部调用时,返回正确的图像宽度。
如何从该嵌套函数中设置全局变量globalMaxW
?
谢谢!
var globalMaxW = 0;
function infoWidth() {
$('.swipe-wrap img').each(function(){
var $me = $(this),
mysrc = $me.attr('src');
var newimg = new Image();
newimg.src = mysrc;
$.imgpreload($me, function(){
if(newimg.width > globalMaxW) {
globalMaxW = newimg.width;
}
});
console.log(globalMaxW);
});
$('#info p').css({'width' : globalMaxW});
}
最佳答案
您的console.log(globalMaxW)在以下代码完成执行之前发生,是的,它那时等于零:
$.imgpreload($me, function(){
if(newimg.width > globalMaxW) {
globalMaxW = newimg.width;
}
});
由于该函数是异步的,因此它将开始运行“ imgpreload”,并立即继续运行而无需等待其完成。将设置globalMaxW,但在console.log()之后...