查找只有部分已知值的字符串

Find string with only partially known value

在 img 标签中,src 不是每次加载页面时的常量值。

<img src="http:/foo.com/directory/id=(random alphanumeric string ID)">

创建它的网络生成的字母数字字符串的数量一般只有 200 多个字符。

如果这是唯一的 img 标签,我会只执行 getElementsByTagName,但是页面源中有很多 img。有没有办法只通过 partial src 内容来定位标签源,然后 .innerHTML ID 号 only?我想它必须以这样一种方式编写,直到它在末尾遇到 "。

您可以迭代并检查 src

var id      = 'random alphanumeric string ID';
var images  = document.querySelectorAll('img');
var match   = null;

for (var i=0; i<images.length; i++) {
    if ( images[i].src.indexOf(id) !== -1 ) {
        match = images[i];
        break;
    }
}

// An image doesn't have innerHTML, but if it had, this is where you'd set it

用更高级的方式来做同样的事情

var id = 'random alphanumeric string ID';

var match = [].slice.call(document.querySelectorAll('img')).filter(function(img) {
    return img.src.indexOf(id) !== -1;
});

如果你想更换那部分

match.src = match.src.replace(id, 'something else');

如果您不知道 ID 是什么而需要获取所有 ID 的

var ids = [].slice.call(document.querySelectorAll('img')).map(function(img) {
    var id = img.src.match(/\/id\=(.+)/);
    return id && id.length ? id.pop() : '';
});

您可以在jQuery

中使用这种选择器
  $("img[src$='id="+ id +"']").css({'border-color':'red', 'border-width':1, 'border-style':'solid'});

将检查 src 属性是否以 'id=?'

结尾

如果我没看错,您是在尝试获取 srcsrc 属性上的 "id=",只有 src 的一部分属性。

可以这样做:

img[src*='part of the src attribute']

那么你就有了img元素,你只需要获取src属性,获取"id=".

之后的所有内容

此处:http://jsfiddle.net/dsoqrqdg/