Obtenir la valeur href locale de la balise anchor (a)

121

J'ai une balise d'ancrage qui a une valeur href locale et une fonction JavaScript qui utilise la valeur href mais la dirige vers un endroit légèrement différent de celui auquel elle irait normalement. La balise ressemble à

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

et une fonction JavaScript qui ressemble à

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

Je m'attendrais à ce que item.hrefcela renvoie simplement une courte chaîne de "sec / IF00.html", mais à la place, il renvoie le href complet, "http://www.thecurrentdomain.com/sec/IF00.html". Existe-t-il un moyen de retirer uniquement le href court comme inséré dans l' <a>étiquette d' ancrage ? Ou est-ce que je perds cela par un comportement HTML naturel?

Je suppose que je pourrais utiliser une manipulation de chaîne pour ce faire, mais cela devient délicat car ma page locale peut en fait être "http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html", et mon champ href peut ou peut ne pas avoir de sous-répertoire (par ex href="page.html"vs. href="sub/page.html"), donc je ne peux pas toujours supprimer tout simplement avant la dernière barre oblique.

Vous vous demandez peut-être pourquoi je demande cela, et c'est parce que cela rendra la page beaucoup plus propre. S'il n'est pas possible d'obtenir uniquement le href court (tel que mis dans la <a>balise d' ancrage ), alors je pourrais probablement simplement insérer un champ supplémentaire dans la balise, comme link="sec/IF00.html", mais encore une fois, ce serait un peu plus compliqué.

Michael Plautz
la source

Réponses:

256

Le code ci-dessous obtient le chemin complet, où pointe l'ancre:

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

tandis que celui ci-dessous obtient la valeur de l' hrefattribut:

document.getElementById("aaa").getAttribute("href"); // sec/IF00.html
Aorcsik
la source
6

document.getElementById("link").getAttribute("href"); Si vous avez plusieurs <a>balises, par exemple:

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

Vous pouvez le faire comme ceci: document.getElementById("link")[0].getAttribute("href");pour accéder au premier tableau de <a>balises, ou cela dépend de la condition que vous créez.

Zange-chan
la source
2

Ce code fonctionne pour moi pour obtenir tous les liens du document

var links=document.getElementsByTagName('a'), hrefs = [];
for (var i = 0; i<links.length; i++)
{   
    hrefs.push(links[i].href);
}
nazifa rashid
la source
0

La propriété href définit ou renvoie la valeur de l'attribut href d'un lien.

  var hello = domains[i].getElementsByTagName('a')[0].getAttribute('href');
    var url="https://www.google.com/";
    console.log( url+hello);
M.Ganji
la source
-2
document.getElementById("aaa").href; //for example: http://example.com/sec/IF00.html
ntihin
la source
2
L'OP a déjà essayé cela, et cela ne lui donne pas les résultats escomptés.
Bobort