Получить локальное значение href из тега привязки (a)

121

У меня есть тег привязки, который имеет локальное значение href, и функция JavaScript, которая использует значение href, но направляет его в немного другое место, чем обычно. Тег выглядит как

<a onclick="return follow(this);" href="sec/IF00.html"></a>

и функция JavaScript, которая выглядит как

baseURL = 'http://www.someotherdomain.com/';
function follow(item) {
    location.href = baseURL + item.href;
}

Я ожидал, что item.hrefэто просто вернет короткую строку «sec / IF00.html», но вместо этого она вернет полный href, «http://www.thecurrentdomain.com/sec/IF00.html». Есть ли способ вытащить только короткий href, как указано в <a>теге привязки ? Или я теряю это из-за естественного поведения HTML?

Полагаю, я мог бы использовать для этого манипуляции со строками, но это становится сложно, потому что моя локальная страница может на самом деле быть «http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html», а мое поле href может или может не иметь в нем подкаталога (например, href="page.html"против href="sub/page.html"), поэтому я не всегда могу просто удалить все, что находится до последней косой черты.

Вы можете спросить, почему я запрашиваю это, потому что это просто сделает страницу намного чище. Если невозможно получить только короткий href (как указано в <a>теге привязки ), то я, вероятно, мог бы просто вставить дополнительное поле в тег, например link="sec/IF00.html", но опять же, это было бы немного сложнее.

Майкл Плаутц
источник

Ответы:

256

Приведенный ниже код получает полный путь, на который указывает якорь:

document.getElementById("aaa").href; // http://example.com/sec/IF00.html

а тот, что ниже, получает значение hrefатрибута:

document.getElementById("aaa").getAttribute("href"); // sec/IF00.html
aorcsik
источник
6

document.getElementById("link").getAttribute("href"); Если у вас более одного <a>тега, например:

<ul>
  <li>
    <a href="1"></a>
  </li>
  <li>
    <a href="2"></a>
  </li>
  <li>
    <a href="3"></a>
  </li>
</ul>

Вы можете сделать это так: document.getElementById("link")[0].getAttribute("href");получить доступ к первому массиву <a>тегов или в зависимости от поставленного вами условия.

Zange-чан
источник
2

Этот код работает для меня, чтобы получить все ссылки документа

var links=document.getElementsByTagName('a'), hrefs = [];
for (var i = 0; i<links.length; i++)
{   
    hrefs.push(links[i].href);
}
нацифский рашид
источник
0

Свойство href устанавливает или возвращает значение атрибута href ссылки.

  var hello = domains[i].getElementsByTagName('a')[0].getAttribute('href');
    var url="https://www.google.com/";
    console.log( url+hello);
M.Ganji
источник
-2
document.getElementById("aaa").href; //for example: http://example.com/sec/IF00.html
ntihin
источник
2
ОП уже пробовал это, и это не дало ему желаемых результатов.
Боборт