2013-03-15 12 views
52

Mam znacznik zakotwiczenia, który ma lokalną wartość href, oraz funkcję JavaScript, która używa wartości href, ale kieruje ją do nieco innego miejsca niż normalnie. Znacznik wyglądaUzyskaj lokalną wartość href z tagu kotwicy (a)

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

i funkcji JavaScript, który wygląda jak

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

Spodziewam się, że item.href po prostu wrócić krótki ciąg „s/IF00.html”, ale zamiast tego zwraca full href, "http : //www.thecurrentdomain.com/sec/IF00.html". Czy istnieje sposób, że mogę wyciągnąć tylko krótki href, jak umieścić w tagu kotwicy <a>? Czy mogę utracić to poprzez naturalne zachowanie HTML?

Przypuszczam, że mógłbym użyć manipulacji ciągiem, aby to zrobić, ale robi się to trudne, ponieważ moja strona lokalna może w rzeczywistości być "http : //www.thecurrentdomain.com/somedir/somepath/sec/IF00.html", i Moje pole href może mieć lub nie mieć podkatalogu (ex href="page.html" vs. href="sub/page.html"), więc nie zawsze mogę usunąć wszystkie rzeczy przed ostatnim ukośnikiem.

Być może zastanawiasz się, dlaczego o to pytam, a to dlatego, że po prostu sprawi, że strona będzie o wiele czystsza. Jeśli nie jest możliwe uzyskanie tylko krótkiego href (jak umieszczona w znaczniku <a>), to mógłbym po prostu wstawić dodatkowe pole do tagu, takie jak link="sec/IF00.html", ale znowu byłoby trochę bałaganu.

Odpowiedz

116

Poniższy kod pobiera pełną ścieżkę, w której punkty kontrolne:

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

natomiast jeden poniżej pobiera wartość atrybutu href:

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

PO już to próbował i nie daje mu pożądanych rezultatów. – Bobort

0

href zestawy własności lub zwraca wartość atrybutu href łącza.

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"); Jeśli masz więcej niż jedno <a> tag, na przykład:

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

można to zrobić tak: document.getElementById("link")[0].getAttribute("href"); aby uzyskać dostęp do pierwszej tablicy <a> tagów lub zależy od stanu, w jakim się znajdujesz.

-4

Smutno było zobaczyć, jak wiele osób udzieliło takich niewygodnych i niewygodnych odpowiedzi. Oto najprostszy sposób, aby odzyskać href:

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

Wszystko odbywa się tylko w jednym wierszu kodu. Jest to elastyczne i nie polega na uzyskiwaniu elementu elementId jak w poprzednich odpowiedziach.

+0

Błąd odniesienia '$' jest niezdefiniowany (pytanie nie używa jQuery, a wiki tagu [tag: javascript] mówi, aby nie udzielać odpowiedzi na pytania bez tagu [tag: jquery]. – Quentin

+0

'var hash = this.hash ; 'Właściwość' hash' nie zawiera nieprzetworzonej wartości atrybutu 'href' (z wyjątkiem pewnych szczególnych okoliczności, które nie mają zastosowania do przykładu w pytaniu) – Quentin

+0

Jesteście w błędzie.Nie działa to dla kodu ale to działa dla wszystkich, których zasugerowałem Otrzymałem 8 polubień na youtube z tą sugestią Więc proszę nie lubić komentarza.Jeśli chodzi o błąd referencyjny To oczywiście musi być w metodzie –

Powiązane problemy