Ich bin neu in Javascript. Ich versuche diesen folgenden Code, um das href-Attribut zu erhalten.

<a href="facebook.com"  onclick="cheak()">Facebook</a>

        <script type="text/javascript">
        function cheak()
        {
            var a= document.getElementsByTagName("a").getAttribute('href');
            alert(a);
        }

</script>

Ich weiß, dass dies mit dem folgenden Code funktioniert

document.getElementById("myid").getAttribute('href');  // if I use any id

Aber im Tag möchte ich keine ID oder Klasse verwenden. Wie kann ich dieses Attribut erhalten, ohne eine ID oder Klasse im Tag a zu verwenden?

3
Satu Sultana 21 Aug. 2015 im 09:40

3 Antworten

Beste Antwort

Vorwort: Im Folgenden habe ich die Frage beantwortet, wie ein Element im allgemeinen Fall ohne Verwendung von id oder class gefunden werden kann. Wenn Sie das Element jedoch nur in Ihrer cheak -Funktion verwenden möchten, ist Zains Antwort der richtige Weg das (mit minimalen Änderungen an Ihrem Code; wohl mehr korrekt könnte eine moderne Ereignisverbindung sein).


Aber im Tag möchte ich keine ID oder Klasse verwenden. Wie kann ich dieses Attribut erhalten, ohne id oder class im a -Tag zu verwenden?

Sie greifen nach dem Schweizer Taschenmesser der Elementauswahl: document.querySelector. Damit können Sie jeden CSS-Selektor verwenden, der dem Element entspricht:

var href = document.querySelector("any selector here").getAttribute("href");

querySelector gibt die erste Übereinstimmung im Dokument zurück. (Es gibt auch querySelectorAll, das eine Liste zurückgibt.) Beide werden in allen modernen Browsern und auch in IE8 unterstützt.

Da Sie über die volle Leistung von CSS-Selektoren verfügen, können Sie alles über die Position des Elements im Dokument verwenden, um es zu finden.

Ihre Frage enthält zu wenig Kontext für ein bestimmtes Beispiel, aber zum Beispiel, wenn es das erste a im Dokument ist:

var href = document.querySelector("a").getAttribute("href");
alert(href);
<a href="facebook.com"  onclick="cheak()">Facebook</a>

Oder mit diesem onclick:

var href = document.querySelector("a[onclick='cheak()']").getAttribute("href");
alert(href);
<a href="facebook.com"  onclick="cheak()">Facebook</a>
3
Community 23 Mai 2017 im 12:06
<a href="www.facebook.com"  onclick="cheak(event)">Facebook</a>

     <script type="text/javascript">
    function cheak(e)
    {
       e.preventDefault(); 
      //  var a= document.getElementsByTagName("a").getAttribute('href');
        alert(e.target);
    }

</script>
0
Ahmer 21 Aug. 2015 im 06:48

Wenn Sie beim Aufrufen der Funktion this übergeben. Es wird die Elementreferenz an Ihre Funktion übergeben und Sie können sie verwenden, um den Wert von href zu erhalten:

<a href="facebook.com"  onclick="cheak(this)">Facebook</a>
<!-- Note -----------------------------^^^^            -->

<script type="text/javascript">
function cheak(a) {
     alert(a.href); // Gives you the fully-resolved URL
     alert(a.getAttribute("href")); // Gives you the content of the `href` attribute (not fully-resolved)
}
</script>

Der Parameter data ist das vollständige Tag, für das die Funktion aufgerufen wird

2
Zain Aftab 21 Aug. 2015 im 07:39