从已知来源获取img元素

时间:2012-01-18 17:07:47

标签: javascript

说我在网页上有如下的img标签

<img src = "https://www.google.com">

有没有办法让我在javascript中通过src获取这个元素?像document.elementFromSrc()之类的东西呢?获取此img元素后的目标是找到x和y坐标等

4 个答案:

答案 0 :(得分:3)

如果您无法添加ID,则可以执行以下操作:

var allImages = document.getElementsByTagName("img");
var target;
for(var i = 0, max = allImages.length; i < max; i++)
    if (allImages[i].src === "https://www.google.com"){
       target = allImages[i];
       break;
    }

但理想情况下,您只需向此img添加一个ID,然后使用document.getElementById

获取该ID

答案 1 :(得分:1)

我建议使用jQuery

var offset = $('img[src="http://www.google.com"]').offset();

这为您提供了文档中的x和y坐标。请参阅offset()position()的文档。

答案 2 :(得分:1)

不要遍历文档中的所有图像。使用查询选择器,该选择器使用正则表达式匹配查询字符串。 尝试这个:  document.querySelector('[src*="https://www.google.com""]')

PS jquery的最小文件大小为94kb。除非有要求,否则请不要包含它。

答案 3 :(得分:0)

没有函数可以通过属性值获取元素(至少,不是广泛支持的元素,尽管类似XPath的选择器很快就会很常见)。你可以这样做一个快速过滤器:

function getElementsByAttributeName(tagName, attributeName, attributeValue) {
  var i, n, objs=[], els=document.getElementsByTagName(tagName), len=els.length;
  for (i=0; i<len; i++) {
    n = els[i][attributeName];
    if (n && (n==attributeValue)) {
      objs.push(els[i]);
    }
  }
  return objs;
}
getElementsByAttributeName('img', 'src', 'http://www.google.com'); // => [<a>]