2013-07-24 65 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