javascript – 如果找到则加载图像,否则加载另一个图像

我需要做的很简单,但(对我来说)很难做到:

使用javascript,给定一个图像名称,即“image01.jpg”,我需要检查这个图像是否存在于某个文件夹或路径中(本地或网络上).如果该文件夹下不存在该图像,我需要检查另一个文件夹中是否存在相同的图像.

例如,使用伪代码

imagetoFind = 'image01.jpg'
path1 = 'users/john/images'
path2 = 'users/mike/img'

if path1+'/'+imagetoFind exists
    //do something
else
    if path2+'/'+imagetoFind exists
        //do something
    else
        print('NOT FOUND')

你建议采用什么样的方法?我首先尝试使用ajax实现这一点,然后使用javascript的Image(),但在这两种情况下我都失败了.

在此先感谢任何帮助,最好的问候

解决方法

您几乎可以依赖为Image节点触发的本机onload和onerror事件处理程序.所以它看起来像
var images = ['users/john/images/image01.jpg','users/mike/img/image01.jpg','some/more/path/image01.jpg'];

(function _load( img ) {
    var loadImage = new Image();

    loadImage.onerror = function() {
        // image Could not get loaded,try next one in list
        _load( images.shift() );
    };
    loadImage.onload = function() {
        // this image was loaded successfully,do something with it
    };

    loadImage.src = img;
}( images.shift() ));

代码可能比您实际要求的更多.您可以基本上将所需的图像路径添加到该数组中,该脚本将搜索列表,直到它可以成功加载一个图像.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...