HTML Elemente / Nodes / Teilbäume rekusiv löschen?
Nostradamus82
- javascript
Ich möchte auf meiner Seite dynamisch Elemente/Tag's hinzufügen und löschen können. Das hinzufügen ist nicht schwer, aber ich möchte auch ganze Teilbäume löschen können. Hierfür habe ich nun schon einiges wie das folgende Script ausprobiert. Es funktioniert quast schon, aber leider
verhält es sich nicht wie zu erwarten.
Bei jedem Klicken wird ein Kind gelöscht, die While-Schleife aber nicht beendet. Sie wird erste beim klicken, wenn kein Kind mehr vorhanden ist beendet (fertig) ausgegeben. Der browser verfällt aber auch in keine endlosschleife. Scheinbar kommt es zu einem RunTimeError.
<script src="prototype.js" type="text/javascript"></script>
<div onclick="removeAllChildren('TagWochenMonatsAnsicht')">Loeschen</div>
<div id="TagWochenMonatsAnsicht">
<div id="Termin">
<div>
123
</div>
</div>
</div>
function removeFullElements(elem)
{
while (Object.isElement($(elem)) == true)
{
while (Object.isElement($(elem).firstDescendant()) == true)
{
removeFullElements($(elem).firstDescendant());
}
$(elem).remove();
}
}
function removeAllChildren(elem)
{
while (Object.isElement($(elem).firstDescendant()))
{
removeFullElements($(elem).firstDescendant());
}
alert('fertig');
}
Hallo Nostradamus82!
Wieso rekursiv? Vielleicht einfach einer Schleife:
function removeAllChildren(parentId) {
var parent = document.getElementById(parentId);
var children = parent.childNodes;
for (var i = 0; i < children.length;) {
parent.removeChild(children.item(0));
};
};
Gruß Uwe
Hallo Nostradamus82!
Vielmehr besser so:
function removeAllChildren(parentId) {
var parent = document.getElementById(parentId);
while (parent.hasChildNodes()) {
parent.removeChild(parent.firstChild);
};
};
Gruß Uwe