javascript - 按文本值获取属性值

时间:2014-08-27 04:38:29

标签: javascript jquery

<a href='http://example.com'>Goes To Example.com</a>

我想得到这个的href值。此链接将始终位于页面

我通常会这样做:document.getElementsByTagName('a')[5]。但是,链接的数量总是在变化,所以它根本不可靠。我有没有办法通过文字Goes To Example.com获得它?

5 个答案:

答案 0 :(得分:1)

您可以使用xpath:

document.evaluate(
    '/html/body//a[text()='Goes To Example.com']/@href', 
    document, null, XPathResult.ANY_TYPE, null);

您可以使用XPathResult迭代结果(iterateNext类型)。

有关详细信息,请参阅xpath文档:https://developer.mozilla.org/en-US/docs/Web/API/document.evaluate

答案 1 :(得分:1)

正如您在评论中所说,您可以使用jquery,使用Contains之类的下载

$('a:contains("Goes To Example.com")')

DEMO

答案 2 :(得分:1)

使用JQuery:contains()选择器。然后,您可以获取属性“href”,如下所示:

$("a:contains(Goes To Example.com)").attr("href");

例如,以下代码段会弹出一个警告,其中包含http://example.com

<html>
    <head>
        <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
    </head>
    <body>
        <a href='http://example.com'>Goes To Example.com</a>

        <script>
            alert($("a:contains(Goes To Example.com)").attr("href"));
        </script>
    </body>
</html>

答案 3 :(得分:0)

您可以执行document.getElementById并将id提供给a标记。要获取文本,您可以使用innerHTML函数

Working Fiddle

HTML标记

<a id="test" href='http://example.com'>Goes To Example.com</a>

JS:

document.getElementById("test").innerHTML

如果您只想通过href属性,那么您必须将其循环

var els = document.getElementsByTagName("a");
for (var i = 0, l = els.length; i < l; i++) {
    var el = els[i];
    if (el.href === 'http://www.example.com/') {
        alert(el.innerHTML);
    }
}

答案 4 :(得分:0)

你可以这样做:

var links = document.getElementsByTagName('a');
var requiredId = "";
for(var i=0; i<links.length; i++){
    if(links[i].innerHTML == "Goes To Example.com"){
        requiredId = links[i].getAttribute('id');
    }
}