folgendes problem, das ich seit länger zeit (mit zugegeben beschränkten fähigkeiten) zu lösen versuche:
im idealfall soll sich durch click auf eine table-cell bei einer anderen die ".style.display" property von "none" auf "table-cell" aendern. das funktioniert bei Mozilla super, beim IE 5.5 + 6.0 scheitert es klaeglich. Verwende folgenden code (der Einfachheit halber auf die zwei faelle beschränkt):
function appear(obj) {
if (document.getElementById && !document.all){
//Mozilla - funktioniert!
pre = 'document.getElementById("';
post = '").style';
}
if (document.getElementById && document.all){
//IE 5.5+ - funktioniert nicht!
pre = 'document.all.';
post = '.style';
}
var myLayer = eval(pre + obj + post);
if (myLayer.display == "none") {
myLayer.display = "table-cell";
}
else {
myLayer.display = "none";
}
}
Im Body wird dann per 'onclick' die id uebergeben:
<TABLE>
<TR><TD><SPAN CLASS="hl" id="gigshead" onMouseOver="this.style.cursor = 'pointer'" onclick="appear('gigs');">GIGS</SPAN><BR></TD></TR>
<TR align="left"><TD id="gigs" style="display:none" CLASS="text" NOWRAP>blablabla
</TD></TR></TABLE>
Der Fehler sollte nicht bei der Browser detection liegen, sondern in der 'if (myLayer.display...' zeile - IE meint 'Could not get the display property. Invalid argument.'
Noch was: wenn ich "display" in der table-cell auf "table-cell" als Ausgangsposition setze statt auf "none", kann ich sie korrekt zum verschwinden bringen, der fehler kommt nur wenn display == none!
Besten Dank fuer jede mögliche Hilfe,
Georg.