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

时间:2015-04-20 19:53:37

标签: javascript html string tags src

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

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

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

如果这是唯一的img标记,我只会执行getElementsByTagName,但页面源代码中有很多img。有没有办法只通过部分 src内容来定位标记源,然后.innerHTML只有 的ID号?我想它必须以这样的方式编写,直到它遇到“最后。”

3 个答案:

答案 0 :(得分:4)

您可以迭代并检查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() : '';
});

答案 1 :(得分:0)

你可以在jQuery中使用这种选择器

  $("img[src$='id="+ id +"']").css({'border-color':'red', 'border-width':1, 'border-style':'solid'});

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

结尾

答案 2 :(得分:0)

如果我做对了,你就试图抓住&#34; id =&#34;它位于src的{​​{1}}属性上,只有img属性的一部分。

可以这样做:

src

然后您将拥有img[src*='part of the src attribute'] 元素,您只需获取img属性,并在&#34; id =&#34;之后获取所有内容。

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