Childs eines DIV Elements
Martin
- javascript
0 Axel Richter0 Martin
Hallo zusammen,
ich arbeite derzeit daran, ein Javascriptmenü das nur IE kompatible ist für Mozilla & Co. umzustellen. Fangen wir mal mit dem Htmlcode an:
---
<div ID="Punkt1">
<img STYLE="visibility:hidden" SRC="_home.gif" ID="SubMenu01" BORDER="0" onMouseOver="style.cursor='pointer';" >
<img STYLE="visibility:hidden" SRC="anfahrt.gif" ID="SubMenu02" BORDER="0" onMouseOver="style.cursor='pointer';" >
</div>
---
Irgendwo in den Tiefen des Javascriptes wird dann folgendes aufgerufen:
---
obj=document.getElementById("Punkt1");
for (i=0;i<=obj.children.length-1;i++)
{
obj.children[i].filters.blendTrans.apply();
obj.children[i].style.visibility="visible";
obj.children[i].filters.blendTrans.play();
}
---
Im IE liefert "objShowAfterAnimation.children.length" jetzt die Anzahl der Childs/Img-Tags also eine 2 zurück. Mozilla hängt sich aber total auf. Leider komme ich auch mit http://www.mozilla.org/docs/dom/domref/dom_el_ref.html#1002691 nicht weiter. Kann mir sagen, wie ich für Mozilla (und damit vermutlich auch Normkonform) die Anzahl der Childelemente/Img-Tags ermitteln kann?
PS: Das Filter in Mozilla ebenfalls nicht funktionieren ist mir bekannt. Falls mir hier schon mal jemand einen Tipp geben kann, wie ich die Elemente wieder "visible" bekomme wär das natürlich auch super.
Danke an alle "Mitdenker"!
Martin
Hallo,
<div ID="Punkt1">
<img STYLE="visibility:hidden" SRC="_home.gif" ID="SubMenu01" BORDER="0" onMouseOver="style.cursor='pointer';" >
<img STYLE="visibility:hidden" SRC="anfahrt.gif" ID="SubMenu02" BORDER="0" onMouseOver="style.cursor='pointer';" >
</div>
Bitte verbessere auch gleich die Schreibweise der Argumentbezeichnungen auf konsequente Kleinschreibung. Die Tag-Namen sind ja bereits richtig, das heißt klein, geschrieben.
Irgendwo in den Tiefen des Javascriptes wird dann folgendes aufgerufen:
obj=document.getElementById("Punkt1");
for (i=0;i<=obj.children.length-1;i++)
Was bringt dieses (i<=[].length-1)?
for (i=0;i<obj.childNodes.length;i++)
{
obj.childNodes[i].filters.blendTrans.apply();
obj.childNodes[i].style.visibility="visible";
obj.childNodes[i].filters.blendTrans.play();
}
http://de.selfhtml.org/javascript/objekte/node.htm#child_nodes
Alledings würde ich noch prüfen, ob obj.childNodes[i] auch wirklich vom Typ IMG ist. http://de.selfhtml.org/javascript/objekte/node.htm#node_name
viele Grüße
Axel
Hallo Axel,
danke für deine schnelle Antwort. Jetzt funktioniert es. Die Programmierdesign Tipps habe ich ebenfalls mit umgesetzt (um mich raus zu reden: der Quelltext stammte ursprünglich nicht von mir ;-)
Der Vollständigkeit halber noch mal das Script:
...
for(var i=0;i<obj.childNodes.length;i++){
if(obj.childNodes[i].nodeName == "IMG")
{
obj.childNodes[i].style.visibility="visible";
}
}
...
<div ID="Punkt1">
<img STYLE="visibility:hidden;" src="home.gif" ID="SubMenu01" BORDER="0"">
<img STYLE="visibility:hidden;" SRC="anfahrt.gif" ID="SubMenu02" BORDER="0">
<img STYLE="visibility:hidden;" src="kontakt.gif" ID="SubMenu03" BORDER="0">
</div>