图片加载的事件 请教高手们怎么做以下效果:1、图片加载前先显示一张加载中的底图,在加载完毕后换成目标图片。2、当目标图片不存在、加载失败时,显示本地的指定图片。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先放一张图片在那里 然后对文档绑定load事件,在load事件里面替换图片路径 function replaceImg() { var img = document.getElementsByTagName("img")[0]; img.removeAttribute("src"); img.setAttribute("src","sites/skins/default/images/a.jpg"); } window.onload = function() { replaceImg(); } 你只做了我的第一点,第二点呢?当sites/skins/default/images/a.jpg 不存在时,指向本地的一张图片,这一步怎么做? 使用onerror="alert('ddd')"去捕捉<img src="1sss.gif" onerror="alert('ddd')" id="img2"/> 按照你的思路我测试过,会产生死循环。具体产生死循环条件如下:<img src="1.jpg" onload="2.jpg" onerror="error.jpg" />当图片第一次加载时,2.jpg若不存在,那么会正确显示error.jpg。但当我隐藏img再显示时,会触发onload和onerror的死循环,图片会不断消失又显示error.jpg,然后又消失又显示error.jpg。奇怪得很,我看网络流量也是在不断的产生。如果不触发这个死循环,那么网络不会一直产生流量的。 借用用1楼那个懒人的代码<script type="text/javascript">function replaceImg() { var img = document.getElementById("img2"); img.setAttribute("src","sites/skins/default/images/a.jpg");//先尝试加载这张图片 img.onerror=function(){ img.setAttribute("src","1.gif");//如果上面的图片不存在,则替换成这张 }}window.onload = function() { replaceImg();//onload事件能保证页面中所有元素均已经加载完成}</script><img src="2.gif" id="img2"/> <img src="http://avatar.profile.csdn.net/0/0/0/2_natici.jpg" alt="正常图片"><img src="http://avatar.profile.csdn.net/0/0/0/2_natici.jpg" data="http://img4.mypsd.com.cn/20110726/mypsd_63257_201107261606130003b.jpg" alt="正常加载data图片"><img src="http://avatar.profile.csdn.net/0/0/0/2_natici.jpg" data="http://www.error.com/xxxx.gif" alt="出错,将加载err_url图片"><script type="text/javascript">var err_url="http://c.csdn.net/bbs/t/5/i/pic_logo.gif"; //定义出错后显示的图片var img=document.getElementsByTagName("img"); for(var i=0;i<img.length;i++){ var att=img[i].getAttribute("data"); if(att!=""&&att!=null){ //没有定义data属性的图片我们不检查 (function(a,b){ var pic = new Image(); pic.src = b; pic.onload = function () { pic.onload = null; img[a].src=b; }; pic.onerror=function(){ pic.onerror = null; img[a].src=err_url; } })(i,att) } }</script> var img = new Image();img.onload = function(){};//加载成功的图片img.src ="";// 默认图片img.onerror = function(){};错误图片 <meta charset="utf-8"/>URL: <input id="url" type="text" /><input type="button" value="URL" onclick="loadPic()"/><br/><img id="pic1" src="" style="display:none;"/><script>var LOADING_URL = 'http://t2.baidu.com/it/u=409863868,1781147496&fm=11&gp=0.jpg';var ERROR_URL = 'http://img10.3lian.com/c1/ps/32/30/14533113.jpg';function $(id){ return document.getElementById(id);}function getPicLoader(){ if(window.__loader){ return window.__loader; } var img = new Image(); window.__loader = img; return img;}function loadPic(){ var loader = getPicLoader(); var url = $('url').value; var showPic = $('pic1'); showPic.src = LOADING_URL; showPic.style.display = ''; loader.onload = function(){ showPic.src = this.src; }; loader.onerror = function(){ showPic.src = ERROR_URL; }; loader.src = url;}</script> js 销毁对象 请问关于判断页面编码形式 如何实现B/S聊天室中向服务器发送聊天信息? 关于bind的使用 我想在同一个asp页面中调用两个特效,但是只有一个能动,另一个不动... 如何用js去除option标签的disabled属性 smzdm.com、tese.taobao.com中,文章列表里的“展开全文”是如何实现的 关于下拉框定位的问题 很急问题:关于分辨率,在线等待! 菜鸟提问? setTimeout 为什么不会堆栈溢出? JQuery能不能选择所有子节点
var img = document.getElementsByTagName("img")[0];
img.removeAttribute("src");
img.setAttribute("src","sites/skins/default/images/a.jpg");
}
window.onload = function() {
replaceImg();
}
<img src="1sss.gif" onerror="alert('ddd')" id="img2"/>
具体产生死循环条件如下:<img src="1.jpg" onload="2.jpg" onerror="error.jpg" />
当图片第一次加载时,2.jpg若不存在,那么会正确显示error.jpg。但当我隐藏img再显示时,会触发onload和onerror的死循环,图片会不断消失又显示error.jpg,然后又消失又显示error.jpg。奇怪得很,我看网络流量也是在不断的产生。如果不触发这个死循环,那么网络不会一直产生流量的。
<script type="text/javascript">
function replaceImg() {
var img = document.getElementById("img2");
img.setAttribute("src","sites/skins/default/images/a.jpg");//先尝试加载这张图片
img.onerror=function(){
img.setAttribute("src","1.gif");//如果上面的图片不存在,则替换成这张
}
}
window.onload = function() {
replaceImg();//onload事件能保证页面中所有元素均已经加载完成
}</script>
<img src="2.gif" id="img2"/>
<img src="http://avatar.profile.csdn.net/0/0/0/2_natici.jpg" data="http://img4.mypsd.com.cn/20110726/mypsd_63257_201107261606130003b.jpg" alt="正常加载data图片">
<img src="http://avatar.profile.csdn.net/0/0/0/2_natici.jpg" data="http://www.error.com/xxxx.gif" alt="出错,将加载err_url图片"><script type="text/javascript">
var err_url="http://c.csdn.net/bbs/t/5/i/pic_logo.gif"; //定义出错后显示的图片
var img=document.getElementsByTagName("img");
for(var i=0;i<img.length;i++){
var att=img[i].getAttribute("data");
if(att!=""&&att!=null){
//没有定义data属性的图片我们不检查
(function(a,b){
var pic = new Image();
pic.src = b;
pic.onload = function () {
pic.onload = null;
img[a].src=b;
};
pic.onerror=function(){
pic.onerror = null;
img[a].src=err_url;
}
})(i,att)
}
}
</script>
img.onload = function(){};//加载成功的图片
img.src ="";// 默认图片
img.onerror = function(){};错误图片
URL: <input id="url" type="text" />
<input type="button" value="URL" onclick="loadPic()"/><br/>
<img id="pic1" src="" style="display:none;"/>
<script>
var LOADING_URL = 'http://t2.baidu.com/it/u=409863868,1781147496&fm=11&gp=0.jpg';
var ERROR_URL = 'http://img10.3lian.com/c1/ps/32/30/14533113.jpg';function $(id){
return document.getElementById(id);
}function getPicLoader(){
if(window.__loader){
return window.__loader;
}
var img = new Image();
window.__loader = img;
return img;
}function loadPic(){
var loader = getPicLoader();
var url = $('url').value;
var showPic = $('pic1');
showPic.src = LOADING_URL;
showPic.style.display = '';
loader.onload = function(){
showPic.src = this.src;
};
loader.onerror = function(){
showPic.src = ERROR_URL;
};
loader.src = url;
}
</script>