Holen Sie sich den ersten untergeordneten Knoten eines bestimmten Typs - JavaScript


69

Ist es möglich, ein untergeordnetes dom-Element abzurufen, das das erste untergeordnete Element eines bestimmten Typs ist?

Zum Beispiel möchte ich in diesen beiden Beispielen das imgElement erhalten:

<a id="mylink" href="#"><img src="myimage.jpg" /></a>

vs.

<a id="mylink" href="#"><span></span><img src="myimage.jpg" /></a>

Keine der Antworten weist darauf hin, dass Ihr Code aufgrund doppelter IDs ungültig ist.
Rob W

3
@RobW - Ich habe fast den gleichen Kommentar abgegeben, aber ich denke, er diente nur zu Demonstrationszwecken. Es ist buchstäblich identisch, bis auf die span.
Jared Farrish

@JaredFarrish Ob zu Demonstrationszwecken oder nicht, die IDs müssen eindeutig sein. Ersetzen classdurch classwürde das Problem lösen. Die Antworten wären auch unterschiedlich: .getElementsByClassName('mylink')[0](oder welcher Index auch immer) und .querySelector('.mylink'). Bei IDs ist die Antwort mit der höchsten Bewertung falsch, da bei dem ersten Element <a id=mylink></a>kein <img>Element ausgewählt ist.
Rob W

Ha - ja, es soll zeigen, dass ich das erste Kind des Bildtyps bekommen möchte - und dass es nicht wirklich das erste Kind bedeutet :)

8
@RobW - Das OP beabsichtigt nicht, dass beide Elemente auf derselben Seite vorhanden sind, sondern dass beide Formulare vorhanden sind . Setzen Sie eine vs.dazwischen und das ist, was ich glaube, das OP beabsichtigt.
Jared Farrish

Antworten:


127

Versuche dies

var firstIMG = document.getElementById('mylink').getElementsByTagName('img')[0];

3
WARNUNG: getElementsByTagName ruft alle passenden Nachkommen ab, NICHT NUR direkte Kinder. Wenn Sie tatsächlich ein Kind bekommen möchten, kann dieser Ansatz in Fällen wie <a id="mylink" href="#"> <span> <img src = "not_child.jpg" /> </ span> <img fehlschlagen src = "first_direct_child.jpg" /> </a>, da Sie das Nachkommenbild "not_child.jpg" erhalten.
Ciabaros


3
var anchor = document.getElementById('mylink');
var images = anchor.getElementsByTagName('img');
var image = images.length ? images[0] : null;

0

Hier ist eine Javascript-Funktion

function getFirst(con,tag)
{
    return con.getElementsByTagName(tag)[0];
}


//html markup
<a id="mylink" href="#"><img src="myimage.jpg" /></a>
<a id="mylink1" href="#"><img src="myimage.jpg" /></a>

//test
var con=document.getElementById('mylink');
var first=getFirst(con,'img');
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.