问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

js中,如何等待多个图片加载完后再执行其他的js代码。

发布网友 发布时间:2022-04-29 00:25

我来回答

4个回答

热心网友 时间:2022-04-23 03:23

可以在js全局代码中,增加一个变量n,用作计数器,表示总图片数。

然后使用图片的onload事件,每成功加载一次图片,将计数器n减去1

当n变成0时,表示图片均加载完毕,这时即可开始执行其他JS代码。


具体示例代码:

var n=$pre4y_main.length;
...
$img[0].onload=function(){    ...
    n--;
    if(!n){
        //执行其他JS代码
    }
};

热心网友 时间:2022-04-23 04:41

写个回调函数,传进onload里就可以了

追问写个思路,哥哥

热心网友 时间:2022-04-23 06:16

当然啦,这里的onload事件handler是一个异步函数,注册了这个事件的handler之后代码就会继续执行,而当onload事件触发之后才会执行它的handler……


这样多半可以,我给个思路吧

/* 前略 */

var isReady = false; /* isReady 代表 img.onload 是否已经被触发 */

$img[0].onload=function(){
    
    /* 这里放上原本在onload的handler中的代码,这里就不写出了 */
    
    isReady = true; /* 一旦onload事件被触发就把 isReady 变为 true */
});

while(!isReady)
{
    /* 什么也不做,这个循环在isReady变成true之前都会一直拖着程序不继续执行 */
}

console.log("steptwo");

/* 下略 */

追问但是现在情况有点不同。那就是图片有很多个。要循环的等图片加载完才行。$img[0].onload是放在一个循环里面的。你看下我代码逻辑就知道了。

追答

嗯……我给你改一下吧。另外不要过于依赖库,连个选择器都非要用jQuery最后对你没有好处。

var $pre4y_main = $(".y_main:lt(4) img[freealign]");

/* 这里增加一个计数变量,逻辑就是当这个预计要加载的图片的数量和实际加载完成的图片的数量相同的时候就继续执行代码 */

var imgCount = 4;/* 这个数字取决于你有多少张图片需要加载 */
var imgLoadCount = 0; /* 这个是计数器,现在这个计数器是0 */

$pre4y_main.each(function(){

    /* 前面的具体操作图片属性的代码,略 */
    
    $img[0].onload = function(){
    
        /* onload原本的代码, 略 */
            
        /* 这里当onload的所有代码都执行结束之后,将计数器+1 */
        
        imgLoadCount++;
                           
        };

});

/* 同理,空循环拖住代码 */

while(imgLoadCount != imgCount){};

console.log("steptwo");

/* 下略 */

热心网友 时间:2022-04-23 08:07

要把图片当成是图片对象才行~<br>var a=new image(); //这个是原生的js实例化<br>a.src=arr[shownum++].url;<br><br>然后image对象有一个属性“onload”,这个就是加载完成,当加载完成之后你可以执行一个函数比如<br>a.onload=function(){<br>alert("完成加载");<br><br>}<br>这样当你的图片加载完成后就执行下面的函数了~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
做青红椒炒毛肚有哪些好吃的诀窍? 如何自制好吃的香辣毛肚? 穿越火线警告码SX(2,509,0)如何解决 CF sx警告码(2,770,0)什么原因 ...要求重新启动电脑 警告码是2 xxxx 0 有时重启4 5次才能玩 win7系统... 穿越火线 sx 警告码 2,994,0 怎么解决 CF出现非法模块SX警告码(2,990,0) 我为什么上CF体验服没开G有非法模块???怎么办啊 警告码(2,502,0) 穿越火线进游戏后 2分钟左右 就出来个 SX 警告码2,990,0 看到刘老师那慈祥的面庞,我感慨万分,我想到了这样几个赞美刘老师的成语... javascript的onload事件与jquery的ready事件的区别 js 怎么让图片加载完成后才执行下面代码? JavaScript判断图片是否能够加载,失败则替 javascript 的onload问题 女生给男生山海的备注是什么意思 js 怎么让图片加载完成后才执行下面代码 “难平的不是山海,是你的心”是什么意思? “所爱隔山海,山海不可平。”这句话是什么意思? 电影无欲不爱中最后琪琪分手时开的是什么牌子型号的红色轿车 关于javascript里图片img.onload的问题 无欲不爱里面 尼克和琪琪分手时的英文插曲时什么 所爱隔山海,是什么意思?谢谢大家帮忙 为什么我的爱奇艺搜索不出来无欲不爱电影的我有会员的,请大神告诉我谢谢啦 落日归山海,山海藏深意,深意总迟解,将爱却晚秋。恍然方知劫,回首已隆冬,什么意思? js image onload怎么用 电影 无欲不爱 中 第23分钟的插曲是什么 就尼克和琪琪买酒吧喝酒的插曲 所爱隔山海,山海皆可平是什么意思 无欲不爱电视里,尼克和琪琪正式分手时出来的插曲叫什么 complete javascript 所爱隔山海什么意思? javascript onload事件的疑问 如何用js判断页面加载完成包括图片不要用onload js image对象的onload是异步还是同步 梦见趴在玉米堆上感是什么意思 梦见自己趴上屋脊上很难才上去? qq注册好友辅助验证失败了怎么办- 问一问 2018年怎么时候可购买春运火车票? 异地户口迁移怎么办理? 异地户口,异地结婚,户口怎么办? 我外地户口怎么去办? 异地户口迁移应该怎么办 如果是外地户口怎么办呢? 如果在外地工作,户口问题怎么办 异地户口迁移怎么办? 外地人在外地怎么办理户口迁移? 2018年火车票预售期多少天? 二O一八年春运火车票什么吋候预订 异地结婚的户口怎么办? 异地迁户口怎么办 刑事再审申请书范文