Löscht die removeChild
-Funktion den untergeordneten Knoten wirklich vollständig? Oder es entfernt nur das Element Kind des angegebenen Parant-Knotens? Wenn das Element nicht wirklich gelöscht wird, gibt es eine Möglichkeit, das Element vollständig zu löschen?
Die Methode removeChild
entfernt sie einfach von ihrem übergeordneten Element. Wenn es ein sichtbares Element der Seite ist, wird es von der Seite entfernt.
Aber Javascript hat Müllsammlung. Dies bedeutet, dass das Knotenobjekt selbst bestehen bleibt, solange sich eine Variable darauf bezieht. Sie können also einer Variablen einen Knoten zuweisen, removeChild
verwenden, um sie von ihrem übergeordneten Knoten zu entfernen, und später einfügen oder an einen anderen Knoten anhängen, wodurch sie effektiv auf der Seite verschoben wird.
Der folgende Code entfernt einen Knoten und wartet 10 Sekunden, bevor er erneut zum Baum (und damit zur Seite) hinzugefügt wird:
%Vor% Dies bedeutet, dass das Knotenobjekt nicht aus dem Speicher gelöscht wurde, weil immer noch eine Variable darauf zeigt (nämlich oldNode
).
Ein anderer Fall:
%Vor% Wenn Sie andererseits
Den entfernten Knoten einer Variablen zuweisen und dann null
(oder irgendetwas anderes) dieser Variable zuweisen - wie Marc B in seiner Antwort vorschlägt - ist völlig unnötig und, IMHO, dumm.
Wenn Sie ein dom-Element wirklich löschen möchten. removeChild alleine ist nicht genug. Dies ist laut Steve Sounders der Autor von YSlow. Sie müssen löschen
verwendenTags und Links javascript html dom removechild