2013-03-15 29 views
52

Ho un tag anchor con un valore href locale e una funzione JavaScript che utilizza il valore href ma lo indirizza in un punto leggermente diverso rispetto a quello normale. Il tag sembraOttieni valore href locale dal tag anchor (a)

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

e una funzione JavaScript che assomiglia

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

Mi aspetterei che item.href sarebbe solo restituire una breve stringa di "sec/IF00.html", ma invece restituisce il full href, "http : //www.thecurrentdomain.com/sec/IF00.html". C'è un modo per estrarre solo il breve href come inserito nel tag di ancoraggio <a>? O lo perdo per comportamento HTML naturale?

Suppongo che potrei usare una manipolazione di stringhe per fare questo, ma diventa complicato perché la mia pagina locale potrebbe essere "http : //www.thecurrentdomain.com/somedir/somepath/sec/IF00.html", e il mio campo href può o non può avere una sottodirectory in esso (per ex href="page.html" vs. href="sub/page.html"), quindi non posso sempre rimuovere ogni cosa prima dell'ultima barra.

Ci si potrebbe chiedere perché lo sto chiedendo, ed è perché renderà la pagina molto più pulita. Se non è possibile ottenere solo lo short href (come inserito nel tag anchor <a>), probabilmente potrei semplicemente inserire un campo extra nel tag, come link="sec/IF00.html", ma, di nuovo, sarebbe un po 'più confuso.

risposta

116

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

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

mentre quello sottostante ottiene il valore dell'attributo href:

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

L'OP lo ha già provato e non gli dà i risultati desiderati. – Bobort

0

Gli insiemi di proprietà href 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); 
4

document.getElementById("link").getAttribute("href"); Se si dispone di 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>

si può fare in questo modo: document.getElementById("link")[0].getAttribute("href"); per accedere alla prima serie di <a> tag o dipende dalla condizione che si fa.

-4

Triste vedere quante persone hanno dato risposte così scomode e scomode. Ecco il modo più semplice per recuperare href:

$("a").click(function(e){ 
     var hash = this.hash; 
     alert(hash); 
    }); 

Tutto fatto in una sola riga di codice. Questo è flessibile e non si basa sull'ottenere elementId come le risposte precedenti.

+0

Errore di riferimento '$' non è definito (la domanda non sta usando jQuery e il tag [tag: javascript] wiki dice di non dare risposte a domande senza il tag [tag: jquery] – Quentin

+0

'var hash = this.hash ; 'La proprietà' hash' non contiene il valore grezzo dell'attributo 'href' (tranne in determinate circostanze specifiche che non si applicano all'esempio nella domanda) – Quentin

+0

Ragazzi, avete sbagliato. Non funziona per il vostro codice ma funziona per tutti quelli che ho suggerito: ho ricevuto 8 Mi piace su youtube con questo suggerimento. Quindi per favore non dispiacere il commento Per quanto riguarda l'errore di riferimento Questo chiaramente deve essere in un metodo –

Problemi correlati