Javascript after, before – Elemente vor anderen / nach anderen einfügen

element.before () fĂĽgt Elemente vor einem Element ein, element.after nach einem Element. Sie ersetzen die alten Methoden insertBefore und appendChild, die nur ĂĽber den Umweg ĂĽber das parent-Element eingefĂĽgt werden konnten.

before, after – Einfügen vor oder nach einem Element

Elemente vor / nach einem bestimmten Element einfĂĽgen

before () und after () fügen Elemente vor einem Element auf der selben Ebene ein, also als Nachbar-Elemente. replaceWith ersetzt ein Element, remove entfernt ein Element. Diese modernen Methoden ergänzen eine ältere Generation von Methoden: Sie sind kurz und gut lesbar sowie direkt auf dem Element nutzbar und werden von allen modernen Browsern unterstützt.

before / after

    lamp1
    Schwarzer Lampenschirm
<figure class="reference">
	<img loading="lazy" src="lamp1.webp" width="500" height="540" alt="lamp1">
	<figcaption>Schwarzer Lampenschirm</figcaption>
</figure>
const reference = document.querySelector ("figure.reference");
const newFigure = document.createElement ("figure");
const img = document.createElement ("img");
img.src = "img/lamp2.webp";
img.width = 500;
img.height = 540;
img.setAttribute ("loading", "lazy");

const figcaption = document.createElement ("figcaption");
figcaption.innerText = "Roter Lampenschirm";

newFigure.append (img, figcaption);
reference.before (newFigure);

elem.append () fĂĽgt ein oder mehrere Elemente als childNodes unter einem Element ein, elem.before () fĂĽgt ein Element auf derselben Ebene als previous Sibling ein.

Schreibarbeit sparen: cloneNode () kopiert ein Element mitsamt seinen childNodes. reference.after (clone) hängt das geklonte Element nach dem Referenz-Element als next Sibling auf derselben Ebene ein.

const clone = newFigure.cloneNode (true);
clone.querySelector ("img").src = "img/lamp3.webp";
clone.querySelector ("figcaption").innerText = "WeiĂźer Lampenschirm";
reference.after (clone);

before und after vs prepend und append

Methode FĂĽgt auĂźerhalb oder innerhalb des Elements ein? Beschreibung
before() auĂźerhalb, davor FĂĽgt ein neues Element vordas aktuelle Element (auf derselben Ebene im DOM).
after() auĂźerhalb, danach FĂĽgt ein neues Element nachdas aktuelle Element (auf derselben Ebene im DOM).
prepend() innerhalb, am Anfang FĂĽgt ein neues Element indas aktuelle Element ganz vorne (als erstes Kind) ein.
append() innerhalb, am Ende FĂĽgt ein neues Element indas aktuelle Element ganz hinten (als letztes Kind) ein.
Vergleich before-after-prepend-append

replaceWith / replaceNode

replaceWith () ersetzt ein Element durch ein anderes Element und unterscheidet sich von der traditionellen Methode replaceChild: Die Methode macht keinen Umweg ĂĽber das Parent-Element.

replace With () ersetzt ein Element mit einem oder mehreren Elementen und / Text (bleibt Text, kein innerHTML, das sich zu Elementen entwickelt).

const gallery = document.querySelector("#gallery");
const placeHere = document.getElementById("placehere");

const reps = [];

for (let i = 0; i < 3; i++) {
    const wrapper = document.createElement("div");
    wrapper.classList.add("rep");

    const img = new Image();
    img.src = `/javascript/img/food-painted-0${i + 1}-500.png`;

    img.onload = () => {
      wrapper.append(img);
    };

    reps.push(wrapper);
}

placeHere.addEventListener("click", function () {
    this.replaceWith(...reps);
});

remove

elem.remove() entfernt das Element aus dem DOM.

Melone

Donut

Schlicht und einfach

elem.onclick = function () 
    this.remove()
};

DOM Methoden: Alte Funktionen vs neue Generation

Aktion Neu (modern) Alt (klassisch)
Element entfernen element.remove(); element.parentNode.removeChild(element);
Element ersetzen element.replaceWith(newNode); element.parentNode.replaceChild(newNode, element);
Vor Knoten einfĂĽgen referenceNode.before(newNode); referenceNode.parentNode.insertBefore(newNode, referenceNode);
Nach Knoten einfĂĽgen referenceNode.after(newNode); referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
Suchen auf mediaevent.de