-2

如何>testhere</a>使用javascript获取href标签之间的文本值?

<a style="color:#39485;" href="/index.html">Hello, 112</a>

112 和 /index.html 总是不同的,唯一相同的是你好,所以考虑到我如何获得在这种情况下为 112 的值?我不想要 Hello, 部分,只是 112。位数可能会有所不同,不一定是 3 位数长,例如这个。上面的行是:

<div id="nna">

下面是:

</span>

另一个是:

<a href="/index/page?number=33" class="page_number">

/index/page?number= 将始终相同,类值也将始终相同。上面的行始终是:

<div id="mla">

下面的行始终是:

<div class="friend_block_avatar">

希望这会让事情变得更容易。我想得到总是不同的数字,在这种情况下是 33。我将在我的浏览器中运行 javascript,它是通过 url 栏的 chrome,如下所示:javascript:javascriptcodegoeshere。所以我不能使用jquery。这个数字的位数也可能不同,不一定是 2 位长。这两个都将在同一页面的源代码中。

4

5 回答 5

0

由于您的hrefinnerHTML前缀总是相同的,并且您只是在寻找一个数字,因此您可以使用简单的正则表达式来完成此操作。例子:

HTML:

<a style="color:#39485;" href="/index.html">Hello, 112</a>
<a href="/index/page?number=33" class="page_number">some link</a>
<a href="index.html">Should not be included</a>

JS:

var regex = /.*number=(\d+)|Hello,\s(\d+)/
var links = document.getElementsByTagName("a");
var innerHtmlNumbers = [];
var hrefNumbers = [];
for (var index = 0; index < links.length; index++) {
  var link = links[index];
  var match = regex.exec(link.getAttribute("href")); // Check the href first
  if (match) {
    // Found an href like "/index/page?number=12381239"
    var hrefNumber = match[1];
    hrefNumbers.push(hrefNumber);
  } else {
    // Check innerHTML for something like "Hello, 123813912"
    match = regex.exec(link.innerHTML);
    if (match) {
      var innerHtmlNumber = match[2];
      innerHtmlNumbers.push(innerHtmlNumber);
    }
  }
}
console.log(hrefNumbers);
console.log(innerHtmlNumbers):

看看这个 jsfiddle看看一个工作示例。有了这个,您可以一次简单地运行所有<a>标签。

于 2013-07-24T16:46:53.183 回答
0

第一个场景:

找到所有的锚点,然后如果文本以 'Hello,' 开头,则提取它:

var anchors = document.getElementsByTagName('a'),
    values = [],
    str = /Hello, /,
    i;

for (i = 0; i < anchors.length; i += 1) {
    if (str.test(anchors[i].text)) {
        values.push(anchors[i].text.replace(str, ''));
    }
}

console.log(values); // an array containing all the values

演示1

第二种情况:

查找所有 href 以 'href="/index/page?number=' 开头的锚点并提取值:

var anchors = document.querySelectorAll('a[href^="/index/page?number="]'),
    values = [],
    i;

for (i = 0; i < anchors.length; i += 1) {
    values.push((anchors[i].pathname + anchors[i].search).replace('/index/page?number=', ''));
}

console.log(values); // an array containing all the values

演示2

于 2013-07-24T16:54:12.777 回答
0

假设href:您希望页面上所有锚标记的 和 html 中有任意数量的数字。

您可以在 chrome 中从 OmniBar 执行以下操作(您知道可以使用 Chrome 的内置控制台在当前页面上执行 javascript 吗?)。

javascript: var anchors = document.querySelectorAll('a'); anchors.forEach = [].forEach; function grabDigits (string) { var match = string.match(/\d+/); if (match && match[0]) { return match; } } anchors.forEach(function(anchor){ console.log('text: ' + grabDigits(anchor.innerHTML)); console.log('href: ' + grabDigits(anchor.href)); }); /* run with: javascript: var anchors = document.querySelectorAll('a'); anchors.forEach = [].forEach; anchors.forEach(function(anchor){ match = anchor.innerHTML.match(/\d+/); if (match && match[0]) { console.log(match[0]); } }); */

Chrome 可能会删除初始javascript:位,因此您可能需要手动将其输入到 omnnibar 中,然后复制并粘贴脚本的其余部分。

我在这里有点随心所欲,但它似乎正在工作^^:

JS

var anchors = document.querySelectorAll('a');

anchors.forEach = [].forEach;


function grabDigits (string) {
  var match = string.match(/\d+/);
  if (match && match[0]) { 
    return match;
  }
}

anchors.forEach(function(anchor){
  console.log('text: ' + grabDigits(anchor.innerHTML));
  console.log('href: ' + grabDigits(anchor.href));

});

jsbin

于 2013-07-24T16:45:12.520 回答
0

首先找到所有的锚点:

var anchors = document.links;

然后解析它们并根据它们的独特性进行拆分Hello,::

if(anchors.length > 0) {
    for(var i in anchors) {
        var str = anchors[i].innerText;

        if(undefined !== str) {
            var parts = str.split('Hello, ');

            if(parts.length > 0 && parts[0] === '') {
                console.log(parts[1]);
            }
        }
    }
}

使用此示例数据:

<a style="color:#39485;" href="/index.html">Hello, 112</a>
<a style="color:#39485;" href="/index1.html">Hello, 113</a>
<a style="color:#39485;" href="/index2.html">Hello, 114</a>
<a style="color:#39485;" href="/index3.html">113</a>
<a href="/index/page?number=33" class="page_number">Hello, 123</a>

...您的控制台将显示112113和。114123

在这里提琴

于 2013-07-24T16:34:45.610 回答
-2

我不确定我是否正确理解了您的问题-您想从其他内容中删除数字吗?您可以使用 string.split 执行此操作:例如,当您有一个带有断点的字符串时

a = "你好,112"

你可以这样做:

a.split(",") 将返回一个数组:

{"你好,","112"}

希望我理解正确^^

于 2013-07-24T16:32:08.550 回答