Ottieni il valore href locale dal tag anchor (a)


121

Ho un tag di ancoraggio che ha un valore href locale e una funzione JavaScript che utilizza il valore href ma lo indirizza in una posizione leggermente diversa da quella che normalmente sarebbe. Il tag ha questo aspetto

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

e una funzione JavaScript simile a

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

Mi aspetto che item.hrefrestituisca solo una breve stringa di "sec / IF00.html", ma invece restituisce l'intero href, "http://www.thecurrentdomain.com/sec/IF00.html". C'è un modo in cui posso estrarre solo il breve href inserito nel <a>tag di ancoraggio ? O lo perdo a causa del comportamento HTML naturale?

Suppongo di poter utilizzare una manipolazione delle stringhe per farlo, ma diventa complicato perché la mia pagina locale potrebbe effettivamente essere "http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html" e il mio campo href potrebbe o potrebbe non contenere una sottodirectory (per ex href="page.html"vs. href="sub/page.html"), quindi non posso sempre rimuovere ogni cosa prima dell'ultima barra.

Potresti chiederti perché lo chiedo, ed è perché renderà la pagina molto più pulita. Se non è possibile ottenere solo il breve href (come inserito nel <a>tag di ancoraggio ), allora probabilmente potrei semplicemente inserire un campo extra nel tag, come link="sec/IF00.html", ma di nuovo, sarebbe un po 'più complicato.

Risposte:


255

Il codice seguente ottiene il percorso completo, dove i punti di ancoraggio:

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

mentre quello sotto ottiene il valore hrefdell'attributo:

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

6

document.getElementById("link").getAttribute("href"); Se hai più di un <a>tag, ad esempio:

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

Puoi farlo in questo modo: document.getElementById("link")[0].getAttribute("href");per accedere al primo array di <a>tag o dipende dalla condizione che fai.


2

Questo codice funziona per me per ottenere tutti i collegamenti del documento

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

0

La proprietà href imposta o restituisce il valore dell'attributo href di un collegamento.

  var hello = domains[i].getElementsByTagName('a')[0].getAttribute('href');
    var url="https://www.google.com/";
    console.log( url+hello);

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

2
L'OP lo ha già provato e non gli dà i risultati desiderati.
Bobort
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.