Obtenha o valor href local da tag âncora (a)

121

Eu tenho uma tag âncora que tem um valor href local e uma função JavaScript que usa o valor href, mas o direciona para um lugar ligeiramente diferente do que normalmente iria. A tag parece

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

e uma função JavaScript que se parece com

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

Eu esperaria que item.hrefisso retornasse apenas uma string curta de "sec / IF00.html", mas em vez disso, ele retorna o href completo, "http://www.thecurrentdomain.com/sec/IF00.html". Existe uma maneira de retirar apenas o href curto colocado na <a>etiqueta de âncora ? Ou eu perco isso pelo comportamento natural do HTML?

Suponho que poderia usar uma manipulação de string para fazer isso, mas fica complicado porque minha página local pode ser "http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html", e meu campo href pode ou pode não ter um subdiretório nele (por ex href="page.html"vs. href="sub/page.html"), então nem sempre posso simplesmente remover tudo antes da última barra.

Você pode se perguntar por que estou solicitando isso, e é porque apenas tornará a página muito mais limpa. Se não for possível obter apenas o href curto (como colocado na <a>tag âncora ), então provavelmente poderia apenas inserir um campo extra na tag, como link="sec/IF00.html", mas, novamente, isso seria um pouco mais confuso.

Michael Plautz
fonte

Respostas:

255

O código a seguir obtém o caminho completo, onde os pontos de ancoragem:

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

enquanto o abaixo obtém o valor do hrefatributo:

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

document.getElementById("link").getAttribute("href"); Se você tiver mais de uma <a>tag, por exemplo:

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

Você pode fazer assim: document.getElementById("link")[0].getAttribute("href");para acessar o primeiro array de <a>tags, ou depende da condição que você fizer.

Zange-chan
fonte
2

Este código funciona para mim para obter todos os links do documento

var links=document.getElementsByTagName('a'), hrefs = [];
for (var i = 0; i<links.length; i++)
{   
    hrefs.push(links[i].href);
}
Nazifa Rashid
fonte
0

A propriedade href define ou retorna o valor do atributo href de um link.

  var hello = domains[i].getElementsByTagName('a')[0].getAttribute('href');
    var url="https://www.google.com/";
    console.log( url+hello);
M.Ganji
fonte
-2
document.getElementById("aaa").href; //for example: http://example.com/sec/IF00.html
ntihin
fonte
2
O OP já tentou isso e não dá os resultados desejados.
Bobort