gl03: toggle ".style.display" mit browserdetection

Beitrag lesen

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.