childNodes - Knoten im Knoten
Sebi
- javascript
<html>
<head>
<script type="text/javascript">
<!--
function test()
{
eltern = document.body;
kind = eltern.childNodes.item(0).id;
alert(kind);
}
//-->
</script>
</head>
<body onLoad="test()">
<div id="eins">Eins</div>
<div id="zwei">Zwei</div>
</body>
</html>
Hallo ...
ich möchte mit einem Script jeweils die <DIV>-Container ansprechen und in diesem Beispiel die ID des erten <DIV> mit alert() ausgeben.
NUR:
Bei dieser Beispielfunktion reagieren die Browser IE und Firefox unterschiedlich - und ich weiss nicht, warum!
IE liefert für "kind" die Id "eins", Firefox liefert "undefined" - Firefox liefert aber bei item(1) das Ergebnis "eins".
Nach meinem Verständnis müsste "eltern.childNodes" alle Tags enthalten, die im Body notiert sind. Diese müsste ich doch dann mit item() und der entsprechenden Indexzahl ansprechen können ....
Demnach wäre item(0) der erste Tag - also der <DIV> mit der ID "eins"
ODER?
Bin für eine Antwort sehr sehr dankbar
mfg Fabian
Halihallo Sebi
ich möchte mit einem Script jeweils die <DIV>-Container ansprechen und in diesem Beispiel die ID des erten <DIV> mit alert() ausgeben.
alert(document.getElementById('eins').id); // :-)
Nach meinem Verständnis müsste "eltern.childNodes" alle Tags enthalten, die im Body notiert sind. Diese müsste ich doch dann mit item() und der entsprechenden Indexzahl ansprechen können ....
Nein, nicht die Tags, auch nicht die Elemente, aber die
Nodes. "Dummerweise" ist Text auch eine Node -> eine Textnode und
zwischen <body> und <div> ist Text, nämlich eine Newline. Anscheinend
werden diese in den Browsern different gehandhabt.
Demnach wäre item(0) der erste Tag - also der <DIV> mit der ID "eins"
Nö. item(0) ist ein Textnode mit einer Newsline als Inhalt. item(1)
dürfte in deinem Beispiel die <div> sein (bei firefox).
Bin für eine Antwort sehr sehr dankbar
Um derartiges auszuschliessen kannst du die Elemente entweder direkt
über ihre id ansprechen (getElementById()), oder du musst auf eine
korrektere, allgemeingültigere Definition gehen. Fixe Indizies sind
hierbei eine etwas heikel (besonders, wenn Browser sie falsch
umsetzen).
Über http://selfhtml.teamone.de/javascript/objekte/node.htm#node_type
hättest du gesehen, dass es sich um eine TextNode handelt und nicht
um eine ElementNode. Lass dir dies mal über alert() ausgeben.
Viele Grüsse
Philipp