【问题标题】:Find string with only partially known value查找只有部分已知值的字符串
【发布时间】:2015-04-20 19:53:37
【问题描述】:

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

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

由创建它的网络生成的字母数字字符串的数量通常刚刚超过 200 个字符。

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

【问题讨论】:

  • 换句话说:您想替换 id= 后面的内容吗?还是建议的解决方案?
  • 我需要拿到那个身份证号码。
  • 你需要在不知道它是什么的情况下抓取它,或者你需要将它作为源的一部分?
  • 在这种情况下,我认为建议的解决方案是正确的,尽管您可以使用正则表达式而不是 indexOf 更安全一些
  • 顺便说一句。谁能告诉我现在是否应该移除我的 cmets?

标签: javascript html string tags src


【解决方案1】:

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

【讨论】:

  • 我认为他的意思更像...src.matches(/a nice regex/)
  • @xerx593 - 我不确定这意味着什么,没有matches 并且检查字符串是否包含字符串是用indexOf 完成的?
  • @adeneo 你比我好多了……我想发布一些东西。但是当我看你的代码时,我感觉自己像个菜鸟:-))
  • 这实际上是我的想法。我知道 for 循环会在那里执行某些功能。我最初的想法是也许我可以找到“id =”的位置,然后创建一个新变量,然后将每个后续字符附加到变量中,并在遇到引号时结束。我只是在将这种想法在功能上实现到我的代码中时遇到了麻烦,所以我认为必须有一种更有效的方法来做到这一点。也许我的第一个思路也可以,但是阅读您的方法@adeneo 我认为这要清楚得多。
  • 然后页面上还有其他没有ID的图片。最后一个获取 ID 的函数遍历所有图像,如果你想过滤掉你可以做的空 -> jsfiddle.net/adeneo/cp5e75gq
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    如果我猜对了,您就是在尝试获取 imgsrc 属性上的“id=”,该属性只有 src 属性的一部分。

    可以这样做:

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

    然后您将拥有img 元素,您只需获取src 属性,并获取“id=”之后的所有内容。

    这里:http://jsfiddle.net/dsoqrqdg/

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      相关资源
      最近更新 更多