首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查图像是否存在,如果不存在,使用Javascript设置默认图像

问检查图像是否存在,如果不存在,使用Javascript设置默认图像
EN

Stack Overflow用户
提问于 2015-05-03 16:56:23
回答 3查看 12.4K关注 0票数 3

我有很多图片。像这样:

代码语言:javascript
复制
<img src="src1"/>
<img src="src2"/>
<img src="src3"/>

有些图像可能并不存在。因此,浏览器将显示一个损坏的图像图片。它很丑陋。如何使用Javascript而不是jQuery来判断图像是否存在?如果不是,给出一个本地镜像来替换它。谢谢。

我试过这个代码,它替换了所有的图像,不仅仅是那些不存在的图像。

代码语言:javascript
复制
function imgError(image) {
            image.onerror = "";
            image.src = "http://www.hi-pda.com/forum/uc_server/data/avatar/000/85/69/99_avatar_middle.jpg?random=10.20420048222877085";
            return true;
        }

        var imgs = document.getElementsByTagName("img");
        for (var i = 0; i < imgs.length; i++) {
            imgs[i].onerror=imgError(imgs[i]);
        }

这些图像是

代码语言:javascript
复制
<img src="rrrrr"  />
    <img src="http://www.hi-pda.com/forum/uc_server/data/avatar/000/52/56/39_avatar_middle.jpg"/>

第一张图片不存在,第二张图片存在。当我在chrome中运行它时,所有的图片都被替换了.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-03 17:58:34

我用下面的代码解决了这个问题:

代码语言:javascript
复制
function nofind() {
    var img = event.srcElement
    img.src="http://www.cnblogs.com/sys/common/image/fileoperation/icon/default.gif";
    img.onerror = null; 
}

var imgs = document.getElementsByTagName("img");
for (var i = 0; i < imgs.length; i++) {
    imgs[i].onError=nofind;
}
票数 2
EN

Stack Overflow用户

发布于 2015-05-03 17:41:50

简单的解决方案:

代码语言:javascript
复制
<img src="http://src1/img.jpg" onerror="this.src='http://src1/error-img.jpg';">

在img标记中设置

更新

一个停止无限循环的更好的解决方案--谢谢@stom

代码语言:javascript
复制
<img src="foo.jpg" onerror="if (this.src != 'error.jpg') this.src = 'error.jpg';">

Originally posted by @svend here

票数 10
EN

Stack Overflow用户

发布于 2015-05-03 16:58:56

您可以将onerror事件侦听器绑定到DOM中的所有图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30011955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档