Wie erhalte ich das nächste Element in HTML mit JavaScript?
Angenommen, ich habe drei <div>
s und erhalte einen Verweis auf eine im JavaScript-Code. Ich möchte herausfinden, welche die nächste <div>
und welche die vorherige ist.
quelle
Wie erhalte ich das nächste Element in HTML mit JavaScript?
Angenommen, ich habe drei <div>
s und erhalte einen Verweis auf eine im JavaScript-Code. Ich möchte herausfinden, welche die nächste <div>
und welche die vorherige ist.
Nun, in reinem Javascript denke ich, dass Sie sie zuerst in einer Sammlung zusammenstellen müssten.
var divs = document.getElementsByTagName("div");
//divs now contain each and every div element on the page
var selectionDiv = document.getElementById("MySecondDiv");
Also im Grunde mit selectionDiv durch die Sammlung iterieren, um ihren Index zu finden, und dann offensichtlich -1 = vorher +1 = weiter innerhalb der Grenzen
for(var i = 0; i < divs.length;i++)
{
if(divs[i] == selectionDiv)
{
var previous = divs[i - 1];
var next = divs[i + 1];
}
}
Bitte beachten Sie jedoch, dass zusätzliche Logik erforderlich ist, um zu überprüfen, ob Sie sich innerhalb der Grenzen befinden, dh, dass Sie sich nicht am Ende oder am Anfang der Sammlung befinden.
Dies bedeutet auch, dass Sie ein Div haben, in dem ein untergeordnetes Div verschachtelt ist. Die nächste div wäre keine Geschwister , aber ein Kind sein, wenn Sie also nur Geschwister als Ziel div auf der gleichen Ebene wollen auf jeden Fall dann verwenden nextSibling die Überprüfung tagName Eigenschaft.
Verwenden Sie die Eigenschaften
nextSibling
undpreviousSibling
:In einigen Browsern (ich vergesse welche) müssen Sie jedoch auch nach Leerzeichen und Kommentarknoten suchen:
Bibliotheken wie jQuery erledigen all diese browserübergreifenden Überprüfungen sofort für Sie.
quelle
div
im Markup befindet sich möglicherweise nicht neben dem Element. Es könnte eine Ebene tiefer oder eine Ebene höher sein.if i write dirty HTML, Javascript will act strange
wie wäre es mit sauberem und gültigem HTML?Kommt wirklich auf die Gesamtstruktur Ihres Dokuments an.
Wenn Sie haben:
Es kann so einfach sein wie das Durchlaufen der Verwendung
Wenn sich das nächste Div jedoch irgendwo im Dokument befinden könnte, benötigen Sie eine komplexere Lösung. Sie könnten etwas mit versuchen
und durch diese laufen, um irgendwie dahin zu gelangen, wo du willst.
Wenn Sie viele komplexe DOM-Traversings wie dieses durchführen, würde ich empfehlen, in eine Bibliothek wie jQuery zu schauen.
quelle
Für jedes HTMLElement gibt es das Attribut "previousElementSibling".
Ex:
Live: http://jsfiddle.net/QukKM/
quelle
previousSibling
scheint die browserübergreifende Lösung zu sein.Das wird einfach ... es ist ein reiner Javascript-Code
quelle
Alle diese Lösungen sehen aus wie ein Overkill. Warum meine Lösung verwenden?
previousElementSibling
unterstützt von IE9document.addEventListener
braucht eine PolyfüllungpreviousSibling
könnte einen Text zurückgebenBitte beachten Sie, dass ich mich entschieden habe, das erste / letzte Element zurückzugeben, falls die Grenzen überschritten werden. Bei einer RL-Verwendung würde ich es vorziehen, eine Null zurückzugeben.
quelle
Getestet und es hat bei mir funktioniert. Das Element, das mich findet, ändert sich gemäß der Dokumentstruktur, die Sie haben.
quelle