0

我有很多图像,比如

var imgArray = ["img1.jpg","img2.jpg"];

在这里,我想知道图像的名称,例如;

for(var i in imgArray) {
  if((imgArray[i].name) == "img2.jpg") {
    //display img2.jpg
  }
}

可能吗??这是在 phonegap 中,所以 imgArray[i] 将是文件夹中的那个图像,我无法检查你的人所说的是:

if(imgArray[i] == "img2.jpg") {

因为 imgArray[i] 没有给出名称,而是给出了文件夹中的图像。

function readDataUrl(file) {
  var reader = new FileReader();
  reader.onloadend = function(evt) {
    imgArray.push(evt.target.result);
  }; 
  reader.readAsDataURL(file);
} 

我是如何得到 imgArray

4

6 回答 6

1

使用document.querySelector通过其src属性获取图像元素。在该元素上,您可以读取name属性:

for(var i in imgArray) {
  // get the image element
  var imgElement = document.querySelector('img[src="'+i+'"]');
  // check its name property if it exists
  if(imgElement && imgElement.name == "img2.jpg") {
    //display img2.jpg
  }
}

注意:你应该小心for(var i in imgArray)语法:如果有人在 Array.property 对象中添加一个方法,它也会被迭代。你最好用

  • for(var i=0; i<imgArray.length; ++i) { ... }(对于旧版浏览器)
  • imgArray.forEach(function(value) { ... });(对于现代浏览器)请参阅forEach参考
于 2013-06-04T09:38:46.087 回答
1

像这样改变它:

for(var i =0, len = imgArray.length; i<len ; i++) {
  if((imgArray[i]) == "img2.jpg") {
    //display img2.jpg
  }
}

性能比 for-in 更好。

于 2013-06-04T09:15:53.353 回答
1

尝试这个

var imgArray = ["img1.jpg","img2.jpg"];
for(var i in imgArray) {
 if((imgArray[i]) == "img2.jpg") {
    // display img2.jpg
  }
}
于 2013-06-04T09:17:40.710 回答
0

这个功能

var imgArray = ["img1.jpg","img2.jpg"];
for(var i in imgArray) {
  if((imgArray[i]) == "img2.jpg") {
    alert("happy");
  }
}
于 2013-06-04T09:16:42.517 回答
0
  • 不要使用“.name”来访问项目
  • 避免for...in与数组一起使用

例子:

var imgArray = ["img1.jpg","img2.jpg"];
for(var i = 0; i<imgArray.length, i++){
   var img = imgArray[i];
   if(img = "img1.jpg"){
      ...
   }
}
于 2013-06-04T09:35:10.287 回答
0

您可以使用FOR循环来查找图像名称,如下所示:

var imgArray = ["img1.jpg","img2.jpg"];
for(var i = 0; i < imgArray.length; i++) {
    if(imgArray[i].indexOf('img2.jpg') !== -1) {
        // do something here
    }
}

我觉得比for(var i in imgArray) {}

于 2013-06-04T09:19:03.283 回答