Ich weiß, dass es auf diese Frage bereits viel zu viele Antworten gibt, aber keine von ihnen entsprach meinen Anforderungen.
Ich wollte eine Funktion, die genau das gegenteilige Verhalten von parentNode.insertBefore
- das heißt, sie muss eine Null akzeptieren referenceNode
(die die akzeptierte Antwort nicht) und wo insertBefore
an der Stelle einfügen würde Ende der Kinder, die man bei der Anmeldung einfügen muss Start einfügen, da es sonst keine Möglichkeit gäbe, mit dieser Funktion überhaupt an der Startposition einzufügen; aus demselben Grund insertBefore
am Ende einfügt.
Da eine Null referenceNode
erfordert, dass Sie das Elternteil ausfindig machen, müssen wir das Elternteil kennen - insertBefore
ist eine Methode der parentNode
Sie hat also auf diese Weise Zugriff auf das übergeordnete Element; unsere Funktion hat das nicht, also müssen wir das übergeordnete Element als Parameter übergeben.
Die resultierende Funktion sieht wie folgt aus:
function insertAfter(parentNode, newNode, referenceNode) {
parentNode.insertBefore(
newNode,
referenceNode ? referenceNode.nextSibling : parentNode.firstChild
);
}
Oder (wenn es sein muss, ich empfehle es nicht) Sie können natürlich auch die Node
Prototyp:
if (! Node.prototype.insertAfter) {
Node.prototype.insertAfter = function(newNode, referenceNode) {
this.insertBefore(
newNode,
referenceNode ? referenceNode.nextSibling : this.firstChild
);
};
}
4 Stimmen
Wenn Sie den Sonderfall des allerletzten untergeordneten Knotens benötigen - stackoverflow.com/questions/5173545/
5 Stimmen
developer.mozilla.org/de-US/docs/Web/API/Element/ o developer.mozilla.org/de-US/docs/Web/API/Element/
4 Stimmen
@AlanLarimer das ist großartig. danke. wissen Sie, wann insertAdjacentElement eingeführt wurde?
1 Stimmen
Laut MDN wird es in IE8 und Firefox 48 (2016 August 08) unterstützt. Folgen Sie der Spur: bugzilla.mozilla.org/show_bug.cgi?id=811259 --> w3.org/Bugs/Public/show_bug.cgi?id=19962 (2016 März 14)