2013-07-05 72 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')); 
}