Uzyskaj lokalną wartość href z tagu anchor (a)

121

Mam tag kotwicy, który ma lokalną wartość href i funkcję JavaScript, która używa wartości href, ale kieruje ją w nieco inne miejsce niż normalnie. Tag wygląda jak

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

oraz funkcję JavaScript, która wygląda jak

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

Spodziewałbym się, że item.hrefzwróci to po prostu krótki ciąg „sec / IF00.html”, ale zamiast tego zwróci pełny href, „http://www.thecurrentdomain.com/sec/IF00.html”. Czy jest sposób, żebym mógł wyciągnąć tylko krótki href umieszczony w <a>tagu kotwicy ? A może stracę to przez naturalne zachowanie HTML?

Przypuszczam, że mógłbym użyć do tego manipulacji na ciągach znaków, ale staje się to trudne, ponieważ moja lokalna strona może faktycznie mieć adres „http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html”, a moje pole href może lub może nie mieć w nim podkatalogu (np. ex href="page.html"vs. href="sub/page.html"), więc nie zawsze mogę po prostu usunąć wszystko przed ostatnim ukośnikiem.

Możesz się zastanawiać, dlaczego o to proszę, a dzieje się tak, ponieważ dzięki temu strona będzie znacznie czystsza. Jeśli nie jest możliwe uzyskanie tylko krótkiego href (tak jak zostało to umieszczone w <a>tagu kotwicy ), prawdopodobnie mógłbym po prostu wstawić dodatkowe pole do tagu, na przykład link="sec/IF00.html", ale znowu, byłoby to trochę bardziej bałaganiarskie.

Michael Plautz
źródło

Odpowiedzi:

255

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

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

podczas gdy ten poniżej pobiera wartość hrefatrybutu:

document.getElementById("aaa").getAttribute("href"); // sec/IF00.html
aorcsik
źródło
6

document.getElementById("link").getAttribute("href"); Jeśli masz więcej niż jeden <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żesz to zrobić w ten sposób: document.getElementById("link")[0].getAttribute("href");aby uzyskać dostęp do pierwszej tablicy <a>tagów lub zależy od warunku, który wprowadzisz.

Zange-chan
źródło
2

Ten kod działa dla mnie, aby uzyskać wszystkie linki do dokumentu

var links=document.getElementsByTagName('a'), hrefs = [];
for (var i = 0; i<links.length; i++)
{   
    hrefs.push(links[i].href);
}
nazifa pochopna
źródło
0

Właściwość href ustawia 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);
M.Ganji
źródło
-2
document.getElementById("aaa").href; //for example: http://example.com/sec/IF00.html
ntihin
źródło
2
OP już tego próbował i nie daje to pożądanych rezultatów.
Bobort