jquery图像加载检查错误

jquery image load check error

本文关键字:错误 检查 加载 图像 jquery      更新时间:2023-09-26

我正在尝试使用以下代码检查是否所有图像都加载在容器中

$(document).ready(function () {
    $(".slide img").each(function (index) {
        var fakeSrc = $(this).attr('src');
        $("<img/>").attr("src", fakeSrc).css('display', 'none').load(function () {
            alert('loaded');
        }).
        error(function () {
            load_img_Single(fakeSrc);
        });
    });
    function load_img_Single(img) {
        alert(img);
        var ruth;
        $("<img/>").attr("src", img).css('display', 'none').load(function () {
            ruth = 'yeap';
        }).error(function () {
            ruth = 'nope';
        });
        alert(ruth);
    }
});

现在你可以看到im使用一个假的容器来加载图像,并检查它是否已经加载。

我在第一次检查图像时使用.error来查看它是否正确加载,如果没有,它会执行我的函数load_img_Single(图像)函数来再次加载它。

现在,在这个函数中,我再次检查它是否已加载。但问题是变量"ruth"没有被设置为该函数中的任何值。它已在外部声明,但仍以"未定义"的形式出现。

任何见解都将不胜感激。

原因是加载图像是异步的。当你打电话时:

$("<img/>").attr("src", img).css('display', 'none').load(function() {
        ruth = 'yeap';
    }).error(function() { ruth = 'nope'; });

loaderror尚未激发。这就是为什么在之后立即调用alert(ruth);ruth是未定义的