Unterschiedlicher Umgang mit Kindknoten im IE vs. Firefox
Gerd
- javascript
Hallo,
mein kleines Beispiel entfernt bei Aufruf einer entsprechenden Funktion
( jeweils ) den obersten Kindknoten aus einem definierten Bereich "ebenen":
------------------------------------------------------------------------------------------------------------------
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<title>test</title>
<script type="text/javascript">
<!--
function entferne_kindknoten()
{
knoten = document.getElementById('ebenen');
kindknoten = knoten.getElementsByTagName('div')[0];
knoten.removeChild(kindknoten);
}
-->
</script>
</head>
<body>
<div id="ebenen">
<!-- Beliebiger Kommentar -->
<div id="ebene1">Ebene1</div>
<!-- Beliebiger Kommentar -->
<div id="ebene2">Ebene2</div>
<!-- Beliebiger Kommentar -->
<div id="ebene3">Ebene3</div>
<!-- Beliebiger Kommentar -->
</div>
<p><a href="javascript:entferne_kindknoten()">entferne kindknoten</a></p>
</body>
</html>
------------------------------------------------------------------------------------------------------------------
Laut Dokumentation http://de.selfhtml.org/javascript/objekte/node.htm#child_nodes_whitespace behandelt der Internet Explorer unter Windows Zeilenumbrüche und Kommentare ebenfalls als Kindknoten, während beispielsweise Firefox diese ignoriert.
Mein Beispiel funktioniert aber in beiden Browsern ( Firefox 2 und IE 7 ) gleichermaßen.
Frage 1:
Was mach ich hier falsch, das es richtig läuft ? Bzw: wann/wo tritt das oben erwähnte Phänomen auf ?
Frage 1:
Wie wird sich der Internet Explorer 8 in diesem Punkt verhalten: weiterhin konsequent "falsch" (d.h. nicht dem DOM entsprechend) oder DOM-gemäß ?
Vielen Dank für Hinweise
Gerd
Yerf!
Was mach ich hier falsch, das es richtig läuft ? Bzw: wann/wo tritt das oben erwähnte Phänomen auf ?
kindknoten = knoten.getElementsByTagName('div')[0];
knoten.removeChild(kindknoten);
Du entfernst entgegen deiner Angabe nicht den ersten Kindknoten, sondern den ersten Div.
knoten.removeChild(knoten.firstChild); //ersten Kindknoten entfernen
Wie wird sich der Internet Explorer 8 in diesem Punkt verhalten: weiterhin konsequent "falsch" (d.h. nicht dem DOM entsprechend) oder DOM-gemäß ?
Weis ich jetzt nicht, aber ich würde mich nicht auf die exakten Kindknoten festlegen. Besser ist es einen robusten Ansatz zu verwenden, der immer das richtige Ergebnis liefert (z.B. so wie in deinem Code per getElementsByTagName)
Gruß,
Harlequin
Hi,
Laut Dokumentation http://de.selfhtml.org/javascript/objekte/node.htm#child_nodes_whitespace behandelt der Internet Explorer unter Windows Zeilenumbrüche und Kommentare ebenfalls als Kindknoten, während beispielsweise Firefox diese ignoriert.
Noe, andersherum.
MfG ChrisB