js等待图片加载完毕后再显示

假如有2张图片 1.jpg 2.jpg,loading图片:loading.jpg
代码如下
<img src='1.jpg' id='bigimg'/>
<a onclick='change(this)' res='1.jpg'>第一张</a>
<a onclick='change(this)' res='2.jpg'>第二张</a>
当我点击第二张的时候,我需要获取res属性的值,并把它赋给id是bigimg的img的src这个属性,那么浏览器应该就去请求张图片,这时,我需要实现的是:如果图片还没有下载下来,img就一直显示loading.jpg图片,如果下载下来,就直接显示下载的图片,请问change这个js函数如何写?

第1个回答  推荐于2017-09-23

function change(obj){
    var img = new Image();
    var loadimg = new Image();
    var bigimg = getElementById("bigimg");
    loadimg.src = "loading.jpg";
    bigimg.innerHTML="";
    bigimg.style.width=String(loadimg.width)+"px";
    bigimg.appendChild(loadimg);
    if(img.complete) {
        bigimg.innerHTML="";
        bigimg.style.width=String(img.width)+"px";
        bigimg.appendChild(img);
        return;
    }
    img.onload = function(){
        bigimg.innerHTML="";
        bigimg.style.width=String(img.width)+"px";
        bigimg.appendChild(img);
    }
    img.src = obj.res;
}

试试~~

本回答被提问者采纳

js中,如何等待多个图片加载完后再执行其他的js代码。
可以在js全局代码中,增加一个变量n,用作计数器,表示总图片数。然后使用图片的onload事件,每成功加载一次图片,将计数器n减去1 当n变成0时,表示图片均加载完毕,这时即可开始执行其他JS代码。具体示例代码:var n=$pre4y_main.length;...$img[0].onload=function(){ ... n--; if(!

...再网页中才能正常显示?我图片的宽高,是用JS算出来的,也不知道是哪个...
是因为js的输出到页面上的图片地址,默认不自动加载的。建议使用下面的方式去规避:(伪代码)var img1 = new Image();im1.src="img_url";document.getElementById('imgid').src= img1.src;

js新建窗口等待所有图片加载完后调用window.print()具体代码怎么写...
window.load{ } window.print()一般代码都是按照顺序执行的。把加载写在最前面,确定所有加载方法完成后,在写输出。你自己试下,我也不是很了解

如何让页面加载完成后执行js
让页面加载完执行js有2种方法,js放在文档代码的下方和把语句代码放在window.onload方法里面。js放在文档代码的下方这是一个最简单的文档结构,引用的javascript文件都放在body的最下方和把语句放在window.onload函数里面,可以让javascript在页面加载完成后执行。<!doctype html> helloWorld--zxk ...

用JS、JQ 重新给img 的src 赋值,如何知道新图片加载成功 如果没有加载...
javascript:给img节点添加一个事件句柄onload,等到图片加载完了就会知道执行这个onload事件。例如:

JS一定要在网页全部加载完成后才能运行吗?
虽然JS加载是放在head里。但是也要看里面的JS是怎么写的。比如,我们写jqery一开始很多人会用$(function(){...}),或者有一个JQ的ready事件,那么这就是JQ封装好的,加载完DOM才执行。如果写原生的。很多人会写window.onload这个事件,就是需要加载完DOM和所有图片之后才执行JS。所以会影响速度。给...

js怎么判断div内容加载完毕后,再执行
根据你的描述,如果不需要等待图片加载完成计算元图片大小,而是计算备用图的大小,并且问题中的脚本不依赖站外JS,可以把脚本放在$(function(){});中执行,不必限定在文中的div中。可以了解下$(document).ready() 与window.onload的区别,以下是执行时间的区别: window.onload必须等到页面内包括图片的...

JS 页面加载触发事件 document.ready和onload的区别
1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个 (document).ready()可以同时编写多个,并且都可以得到执行 ...

请大侠帮忙修改:用JavaScript添加等待图片效果,要求:等待时图片在中间显...
要求:只能修改这个js代码...代码呢?其实很简单:点击提交按钮后,先显示(或新建)一个层,用来放指定的等待图片,使用createElement方法,然后开始AJAX提交过程,在处理回传数据的函数里加上几句:隐藏等待图片,显示“已完成!”

javascript图片预加载和延时加载的区别
预加载:就是页面打开,图片什么的都加载好了(优先显示图片)延迟加载:优先显示别的,等别的显示完了,再加载图片(优先显示其他东西)各有所需,看你的用户需要优先看什么。

相似回答