2013-07-24 142 views
-2

如何获取使用javascript的href标记中>testhere</a>之间的文本值?通过javascript获得href标记的值

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

112和/index.html将永远是不同的,这将是相同的唯一的事情是为你好,所以有这一点我如何得到在这种情况下是112的价值呢?我不想要你好,部分,只是112.数字的数量可能会有所不同,它不一定是3位数字,例如这个。 上面的行是:

<div id="nna"> 

和下面的一个是:

</span> 

另一个是:

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

/索引/页号=将始终是相同的,班级价值也会如此。 上面的行总是:

<div id="mla"> 

低于该行始终是:

<div class="friend_block_avatar"> 

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

+0

你有过HTML在所有的任何控制? –

+0

不,我无法控制html。 – bob

+0

这与样式和href属性有什么关系?你只是试图从主播获取部分文本内容? – David

回答

0

第一种方案:

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 

Demo1

第二种情况:

找到所有的锚,那么如果该文本用 '你好,' 提取它开始查找所有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 

Demo2

+0

如何提醒阵列? – bob

+0

@bob,如果你愿意,你可以用'alert'替换'console.log',但最好使用'console.log'。 –

+0

它不起作用,它只是冻结我的浏览器。 – bob

-2

林不知道我理解你的问题是否正确 - 你想从其他内容减少数量?你可以用string.split这样做:当你有例如断点字符串

一个=“你好,112”

你可以做这样的事情:

a.split(” “)将返回一个数组:

{” 你好 “” 112" }

我希望我的理解是正确的^^

+0

再次阅读我的问题和评论,这与它无关。 – bob

+0

等待 - 为什么downvotes和不友善? Jtery回答同样的事情。 – GFP

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> 

...您的控制台将显示112113114123

Fiddle here

+0

对不起,我只是想要一个快速的脚本,可以将这两个值直接解析成一个变量。感谢您的帮助。 – bob

+0

我增加了更多的细节,现在应该会更容易一些。 – bob

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

+0

不是所有的锚标签,只有那些。你是最接近完成这一个。 – bob

+0

我增加了更多细节,现在应该会更容易一些。 – bob

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): 

乘坐look at this jsfiddle看到的工作示例。有了这个,你可以简单地运行你所有的<a>标签。

+0

我增加了更多细节,现在应该会更容易一些。 – bob