Ruft den lokalen href-Wert vom Tag anchor (a) ab

121

Ich habe ein Ankertag mit einem lokalen href-Wert und eine JavaScript-Funktion, die den href-Wert verwendet, ihn jedoch an eine etwas andere Stelle leitet, als dies normalerweise der Fall wäre. Das Tag sieht aus wie

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

und eine JavaScript-Funktion, die aussieht

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

Ich würde erwarten, dass item.hrefnur eine kurze Zeichenfolge von "sec / IF00.html" zurückgegeben wird, stattdessen jedoch die vollständige href "http://www.thecurrentdomain.com/sec/IF00.html". Gibt es eine Möglichkeit, wie ich nur die kurze href herausziehen kann, die in das Ankertag <a>eingefügt wurde? Oder verliere ich das durch natürliches HTML-Verhalten?

Ich nehme an, ich könnte eine Zeichenfolgenmanipulation verwenden, um dies zu tun, aber es wird schwierig, weil meine lokale Seite tatsächlich "http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html" lautet und mein href-Feld möglicherweise oder möglicherweise kein Unterverzeichnis (z. B. href="page.html"vs. href="sub/page.html"), sodass ich nicht immer alles vor dem letzten Schrägstrich entfernen kann.

Sie fragen sich vielleicht, warum ich dies anfordere, und das liegt daran, dass die Seite dadurch viel sauberer wird. Wenn es nicht möglich ist, nur die kurze href (wie im <a>Ankertag angegeben) zu erhalten, könnte ich wahrscheinlich einfach ein zusätzliches Feld in das Tag einfügen, wie link="sec/IF00.html", aber auch das wäre etwas chaotischer.

Michael Plautz
quelle

Antworten:

255

Der folgende Code erhält den vollständigen Pfad, auf den der Anker zeigt:

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

während der folgende den Wert des hrefAttributs erhält :

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

document.getElementById("link").getAttribute("href"); Wenn Sie mehr als ein <a>Tag haben, zum Beispiel:

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

Sie können dies folgendermaßen tun: document.getElementById("link")[0].getAttribute("href");um auf das erste Array von <a>Tags zuzugreifen , oder abhängig von der Bedingung, die Sie erfüllen.

Zange-Chan
quelle
2

Dieser Code funktioniert für mich, um alle Links des Dokuments zu erhalten

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

Die Eigenschaft href legt den Wert des Attributs href eines Links fest oder gibt diesen zurück.

  var hello = domains[i].getElementsByTagName('a')[0].getAttribute('href');
    var url="https://www.google.com/";
    console.log( url+hello);
M. Ganji
quelle
-2
document.getElementById("aaa").href; //for example: http://example.com/sec/IF00.html
ntihin
quelle
2
Das OP hat das bereits versucht und es gibt ihm nicht die gewünschten Ergebnisse.
Bobort