2009-12-30 21 views
1

我一直试图自己学习几个小时,只是不得不放弃和恳求怜悯。JavaScript - 通过使用其src标记检测图像是否存在

我正在写一个与我的工作OWA(Outlook Web Access)进行交互的greasemonkey脚本,没有任何花哨。

目标是找到并计算图像(没有名称或ID)存在于“收件箱”内的次数。

这里是我的简单测试失败,我当然希望我知道为什么:

var ilist = document.images; 
for(var i = 0; i < ilist.length; i++) { 
    if(ilist[i] == "msg-unrd.gif") { 
     // found the image 
     alert('Found new message image!'); 
    } 
} 

的目的是为了把这些“新消息”图像的数量和它们放置到将内使用的变量页面标题。

parent.document.title = "(..+UNREAD_COUNT+..) Inbox"; 

“收件箱”和我想检测和计数该消息的来源看上去像这样:

img alt="Message: Unread" src="8.1.393.1/themes/base/msg-unrd.gif" 

我知道有对OWA写了几个其他的Greasemonkey脚本,但源自我尝试使用的源以来已经改变,所以它们也失败了。

希望你的假期一直很棒!

回答

4

我会那样做(你忘了src属性):

var images = document.getElementsByTagName('img'); 
var count = 0; 
for (var i = 0; i < images.length; i++) 
    if (images[i].src.match(/msg-unrd\.gif$/)) 
     count++; 

...或者,如果您使用Prototype JS

var count = $$('img[src~=msg-unrd\.gif]').length; // Win! 
+0

我会建议你使用'RegExp.test',而不是'String.match',因为你只需要知道,如果字符串匹配或不...'/ MSG- unrd \ .gif $ /。test(images [i] .src)' – CMS 2009-12-30 18:28:55

+0

哇,我真不敢相信我浪费了六个小时的时间试图解决这个问题。从解决方案的角度来看,我至少还有六十年的时间从​​计算出来。 非常感谢。 – Aaron 2009-12-30 18:30:50

+0

@CMS:对,使用'test'实际上会更好。 @Aaron:没问题;) – watain 2009-12-30 18:32:28

1

您需要的URL与图像元素的src属性比较,而不是与整个图像元素本身:

String src = "msg-unrd.gif"; 
if (ilist[i].src.match(src + '$') == src) { 
    // ... 
} 

编辑它实际上应该年底与指定的URL,我忽略那。我改进了代码示例。

0

document.images仍然是得心应手:

var count=0, images=document.images; 
for(var i=0, L=images.length;i<L;i++){ 
     if(images[i].src.indexOf('msg-unrd.gif')!=-1)count+=1; 
} 
0

如果你想使用jQuery,你可以在一行中做到这一点(虽然它仍然是一样的w在后端ORK)

$('img[src$=msg-unrd.gif]').size() 
相关问题