我有一些来源让我疯狂......
首先,我有一个这样的对象:
var extensions = {"jpg":".jpg","JPG":".JPG","png":".png","PNG":".PNG"};
现在我想迭代对象以检查是否存在具有这些扩展之一的图像。其来源如下:
var imgURL = "some/path/";
var imgName = "myFileName";
var counter = 0;
$.each(extensions, function( key, imgExtension ){
var tmpImgUrl = imgURL + imgName + imgExtension;
console.log('test');
$( ".imageCheck" ).unbind().attr( "src", tmpImgUrl ).error( function(){
console.log( tmpImgUrl );
counter++;
if( counter >= Object.keys( extensions ).length){
return false;
}
});
});
每个应该采用图像名称并尝试测试每个扩展名是否有错误。实际上它做了它应该做的事情。唯一的问题是,计数器没有计数,控制台日志显示错误。
我表示日志应该是这样的:
test
some/path/myFileName.jpg
test
some/path/myFileName.JPG
test...
等等。但它看起来像:
test
test
test
test
some/path/myFileName.jpg
some/path/myFileName.JPG
...
实际上我想使用图像检查为每个返回一个中断(false),因此不会检查所有扩展。 (性能)
退出检查部分时我真的需要柜台....
有人猜到这里出了什么问题吗?
答案 0 :(得分:1)
创建一个加载器来进行图像测试。
初始化field:value
进行测试。
创建index
,添加<img>
和onload
行为。 onerror
会通知用户,或者您可以让加载程序接受onload的回调来调用它,onload
会尝试加载下一个类型的图片。
onerror
函数首先检查tryLoad
是否等于index
,如果是,这意味着所有可能的失败,通知用户图像加载失败,并且一些失败后退或其他东西。
否则,它使用当前extensions.length
与给予fileName和index
来创建imagepath,将其设置为url
并为下次尝试增加img.src
。
致电index
开始此过程。
现在当当前tryload
有效时图像会停止尝试,并且将逐个尝试extesions,直到没有其他可以使用。
url
答案 1 :(得分:-3)
你不会想要使用jQuery的.each循环遍历一个对象 - 正确的方法是使用javascript来循环。
循环扩展对象应该如下所示:
"Error: String types not allowed (at 'layout_marginLeft' with value 'fill_parent')."
然后,您可以使用上述循环结构对这些键或值执行任何操作。