JavaScript - 使用src标记检测图像是否存在

时间:2009-12-30 18:18:37

标签: javascript image dom

我一直在努力学习这几个小时,只是不得不放弃并恳求怜悯。

我正在编写一个与我的工作OWA(Outlook Web Access)交互的greasemonkey脚本,根本没什么好看的。

目标是查找并计算我的“收件箱”中存在图片(没有姓名或身份证)的次数。

这是我的简单测试失败,我当然希望我知道原因:

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 个答案:

答案 0 :(得分: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!

答案 1 :(得分:1)

您需要将网址与图片元素的src属性进行比较,而不是与整个图片元素本身进行比较:

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

编辑它实际上应该结束指定的网址,我忽略了这一点。我改进了代码示例。

答案 2 :(得分: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;
}

答案 3 :(得分:0)

如果你想使用jquery,你可以在一行中完成它(尽管它在后端仍然做同样的工作)

$('img[src$=msg-unrd.gif]').size()