Hallo Orlok,
Ja, es gibt mehrere Wege, Elemente ins DOM einzufügen. Welcher davon sinnvoll ist, hängt vom konkreten Anwendungsfall ab. Was du eigentlich erreichen willst, lese ich aus deinem Beitrag allerdings nicht heraus.
Wie auch in dem Beispiel möchte ich nur Elemente erweitern. Sinnvoll zb. bei Tabellenzeilen (obwohl es dafür sogar eine funktion gibt insertRow()) mehr Eingabefelder bei Bedarf, etc. Bei mir gehts aber um adminstrative Elemente eines Dokumenteneditors.
Ein einzelnes, im DOM bereits vorhandenes Element zu klonen und die Kopie direkt ins DOM einzufügen, ist vermutlich nur in wenigen Fällen ein sinnvolles Vorgehen.
Doch, bei allem was vielleicht mehr Elemente braucht, deren Anzahl vorher nicht absehbar sind.
Es gibt die Methode ChildNode.after, mit der du mehrere Elemente oder Textknoten nach dem Knoten einfügen kannst, auf dem du die Methode aufrufst. Zusammen mit
cloneNode
würde die Methode genau das tun, was du beabsichtigst.
hmm. da mache ich wahrscheinlich was falsch oder aber so einfach wie mit insertAdjacentElement() gehts doch nicht. Aber ich gehe mal davon aus dass es funktioniert, daher: Wo liegt der Unterschied zwischen den Beiden?
Auch hier ist mir wieder nicht klar, was dein eigentliches Problem ist. Wenn du auf ein Element im DOM zugreifen willst, egal ob mit
addEventListener
oder einer anderen Methode, muss das Element zu diesem Zeitpunkt erzeugt worden sein. Da gibt es wieder mehrere Wege zum Ziel.
Der Grund ist einfach ich möchte das aufgeräumt im Headbereich haben möglichst ohne viel zusätzlichen Extraballast.
Du kannst einem eingebetteten Skript auch das Attribut
type="module"
geben. Module verhalten sich standardmäßig so, als wäre dasdefer
Attribut gesetzt, auch wenn sie im Dokument eingebettet sind.
Das ist absolut, dass was ich gesucht habe, perfekt danke. Damit ist dann auch meine zweite Frage beantwortet. Unglaublich wo ihr sowas findet, bin ich zu dumm zum Suchen?
Gruss
Henry
Meine Meinung zu DSGVO & Co:
„Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“