Получить значение href atribute тега без jQuery

есть ли способ, как без jQuery получить из строки значение атрибута href в теге "a"? У меня есть строка с (например) этим контентом - <a href="www.something">.

Как я могу получить значение атрибута href в переменную?

3 ответов


у меня есть строка с (например) этот контент - <a href="www.something">

если это на самом деле в строке следующим образом:

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

затем вы можете использовать регулярное выражение с .match() метод:

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

если это элемент на Вашей странице, тогда посмотреть ответ Ти Джея Краудера (мне не нужно дублировать эту информацию здесь).


если у вас действительно есть что в строке, потом см. ответ nnnnnnn.

или поочередно, если вы находитесь в среде браузера:

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. Или, если вы отвечаете на событие, и событие происходит на элементе рядом с тем, который вы хотите, вы можете использовать various свойства и методы DOM для перехода к нему. С много современных браузеров, вы можете используйте селекторы CSS и либо querySelector (найти один элемент) или querySelectorAll (список).

например, это дает вам href первая ссылка на странице, которая имеет класс "foo":

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

полный пример: Скопировать Видео | Живой Источник

<!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>

следующий код будет зацикливаться на всех <a/> элементы и журнал их href значение (если оно есть):

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

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