老师有点理解不了
loadimg($img.data('src'),function(url){
$img.attr('src',url);
console.log(index+':loaded');
})
});
function loadimg(url,imgLoaded){
var image=new Image();//创建 一个img标签
image.onload=function(){//加载完成之后触发
if(typeof imgLoaded==='function')imgLoaded(url);
}
image.src=url;
}就是既然新创建了一个img标签为啥还要用$img.attr('src',url);改变原来的那个标签的src,为啥不直接用新标签替换原来的那个标签呢?
正在回答
同学你好,主要是考虑url地址不对的情况,设置一张备用图。参考如下:
如果只是要定时器延迟的效果,是不需要创建新图片的,直接如下:
但如上情况中,如果$img.data('src')没有获取到src属性,或者我们人为的传递错误时,没有进行错误处理(错误处理就是我们设置备用的图片)。所以老师创建了一个新img,然后会先执行定时器,当1s之后,图片能够加载成功,则说明url没有问题,执行onload(图片加载成功就会执行onload),调用imgLoaded插入图片。反之,url有问题,失败则执行onerror。此时就会调用imgFailed,显示备用图。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星