2013-07-05 106 views
4

有什麼辦法,如何在沒有jQuery的情況下從「a」標籤的字符串值中獲取href屬性? 我有(例如)這個內容的字符串 - <a href="www.something">獲取href屬性的值<a>不帶jQuery的標籤

如何獲得href屬性值的變量?

+0

你開始用細繩或DOM元素?如果您有DOM元素,只需執行'var href = a.href;'。 –

回答

4

我有字符串(例如)此內容 - <a href="www.something">

如果它實際上是一個字符串,如下所示:

var s = '<a href="www.something">'; 

然後你可以使用正則表達式與.match() method

var href = s.match(/href="([^"]*)/)[1]; 
// href is now www.something 

如果它是您的網頁上的元素,然後看看T.J. Crowder's answer(我不需要在這裏複製這些信息)。

+1

當我們組隊時,好事發生。 :-) –

+0

謝謝@ T.J.Crowder。我已經將提到的答案升級爲實際的超鏈接。 +1在你的答案。 – nnnnnn

+0

(在這裏,我認爲它的先前upvote是從你!:-)) –

9

如果你真的有作爲字符串,那麼refer to nnnnnn's answer

或者交替,如果你在瀏覽器環境:

var str = '<a href="www.something">'; 
var div = document.createElement('div'); 
div.innerHTML = str + "</a>"; // Make it a complete tag 
var link = div.firstChild.getAttribute("href"); 

如果你可以通過該標記創建了一個頁面上的實際元素,則:

如果你有一個參考元素,你可以從它得到href像這樣:

var link = theElement.href; 
// or 
var link = theElement.getAttribute("href"); 

通過它得到它getAttribute返回實際屬性的值而不是完全限定版本,並且href反射屬性獲取完全限定版本(例如,相對鏈接得到擴展)。

獲取對元素的引用是一個廣泛的主題。如果它有id,則可以使用getElementById。或者,如果您正在迴應某個活動,並且活動正在您想要的活動附近的某個元素上發生,則可以使用各種DOM properties and methods進行導航。使用a lot of modern browsers,您可以使用CSS選擇器和querySelector(查找一個元素)或querySelectorAll(列表)。

例如,這使您具有類"foo"頁面上的第一個鏈接的href

console.log(document.querySelector("a.foo").href); 

完整的示例:Live Copy | Live Source

<!DOCTYPE html> 
<html> 
<head> 
<meta charset=utf-8 /> 
<title>Getting the Link</title> 
</head> 
<body> 
    <a id="theLink" href="/relative/link">Link</a> 
    <script> 
    (function() { 
     var theLink = document.getElementById("theLink"); 
     display("<code>href</code> property: " + theLink.href); 
     display("<code>getAttribute('href')</code>: " + 
       theLink.getAttribute("href")); 

     function display(msg) { 
     var p = document.createElement('p'); 
     p.innerHTML = String(msg); 
     document.body.appendChild(p); 
     } 
    })(); 
    </script> 
</body> 
</html> 
0

下面的代碼將遍歷所有<a/>元素,並記錄他們的href值(如果他們有一個):

var anchors = document.getElementsByTagName('a'); 
var i, len = anchors.length; 

for(i = 0; i < len; i++) { 
    console.log(anchors[i].getAttribute('href')); 
}