1092 Stimmen

Wie fügt man ein Element nach einem anderen Element in JavaScript ein, ohne eine Bibliothek zu verwenden?

Es gibt insertBefore() in JavaScript, aber wie kann ich ein Element einfügen nach ein anderes Element, ohne jQuery oder eine andere Bibliothek zu verwenden?

4 Stimmen

Wenn Sie den Sonderfall des allerletzten untergeordneten Knotens benötigen - stackoverflow.com/questions/5173545/

4 Stimmen

@AlanLarimer das ist großartig. danke. wissen Sie, wann insertAdjacentElement eingeführt wurde?

40voto

James Long Punkte 4467

Eine schnelle Google-Suche zeigt dieses Skript

// create function, it expects 2 values.
function insertAfter(newElement,targetElement) {
    // target is what you want it to go after. Look for this elements parent.
    var parent = targetElement.parentNode;

    // if the parents lastchild is the targetElement...
    if (parent.lastChild == targetElement) {
        // add the newElement after the target element.
        parent.appendChild(newElement);
    } else {
        // else the target has siblings, insert the new element between the target and it's next sibling.
        parent.insertBefore(newElement, targetElement.nextSibling);
    }
}

30 Stimmen

Allen, die über dieses Skript stolpern, empfehle ich, es nicht zu verwenden. Es versucht, Probleme zu lösen, die @karim79s native Lösung bereits löst. Sein Skript ist schneller und effizienter - ich würde dringend empfehlen, dieses Skript anstelle des vorliegenden zu verwenden.

0 Stimmen

Und warum? Es sind nur ein paar Zeilen mehr, mit einer zusätzlichen Bedingung für die Behandlung von Randfällen beim letzten Kind. Alles andere ist völlig gleich.

10 Stimmen

Als allgemeine Faustregel in JavaScript gilt, dass der Browser eine Aufgabe schneller erledigen kann als alles, was Sie schreiben können. Obwohl die beiden Lösungen funktionell gleich sind, muss meine JavaScript-Lösung vom Browser gelesen und verstanden werden, bevor sie verwendet werden kann, und erfordert bei jeder Ausführung eine zusätzliche Überprüfung. Die von karim79 angebotene Lösung erledigt all dies intern, wodurch diese Schritte eingespart werden. Der Unterschied wird bestenfalls trivial sein, aber seine Lösung ist die bessere.

24voto

golopot Punkte 8690

Die Methode node.after ( doc ) fügt einen Knoten nach einem anderen Knoten ein.

Für zwei DOM-Knoten node1 y node2 ,

node1.after(node2) Einsätze node2 nach node1 .

Diese Methode ist in älteren Browsern nicht verfügbar, so dass in der Regel ein Polyfill erforderlich ist.

0 Stimmen

Dies nimmt ein bisschen manuelle Arbeit zu implementieren, wie eine funktionierende insertAfter aber, so leider ich nicht glaube, dies würde richtig funktionieren.

8voto

Payel Dutta Punkte 612

Dies ist der einfachste Weg, wie wir ein Element nach einem anderen mit Vanilla-Javascript hinzufügen können

var d1 = document.getElementById('one');
d1.insertAdjacentHTML('afterend', '<div id="two">two</div>');

Referenz: https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML

0 Stimmen

Nicht wirklich. Dies wird an das Ende oder den Anfang angehängt, NICHT nach einem anderen Element.

2 Stimmen

@MartinJames Es wird tatsächlich NACH einem anderen Element angehängt. Es gibt vier mögliche insertPositions: beforebegin - Fügt das Element VOR dem aktuellen Knoten ein beforeend - Hängt das Element an das Ende des aktuellen Knotens an. So wird das Element zum letzten Kind des aktuellen Knotens afterbegin - Fügt das Element an den Anfang des aktuellen Knotens vor. Das Element wird also das erste Kind des aktuellen Knotens afterend - Fügt das Element NACH dem aktuellen Knoten ein. Das Element wird also zum nächsten Geschwisterkind des aktuellen Knotens.

8voto

olvlvl Punkte 2196

Oder Sie können es einfach tun:

referenceNode.parentNode.insertBefore( newNode, referenceNode )
referenceNode.parentNode.insertBefore( referenceNode, newNode )

0 Stimmen

Auf diesen Ansatz wäre ich nie gekommen. Ich würde es vorziehen, die von @karim79 zu verwenden. direktere Antwort aber es ist gut, daran zu denken.

0 Stimmen

Ich würde dies nicht empfehlen, aber +1 für Kreativität.

6voto

Malik Khalil Punkte 5747

Schritt 1. Elemente vorbereiten:

var element = document.getElementById('ElementToAppendAfter');
var newElement = document.createElement('div');
var elementParent = element.parentNode;

Schritt 2. Anhängen nach :

elementParent.insertBefore(newElement, element.nextSibling);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X