您好,并预先感谢您对这个难题的帮助!

我在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()之后...

10-06 11:43