Gunnar: Netscape

Beitrag lesen

Hallo,

ich versuche eine Tabellenzelle so zu konfigurieren, dass beim Mousover die Hintergrundfarbe geändert wird. Wenn ich den <a href...> in die Zelle schreibe gilt der Mouseover nur bis zu Ende des Zelleninhaltes. Es soll aber auch funktionieren wenn die Zelle leer ist. Im Explorer funktioniert das super nur im Netscape nicht. Was mache ich falsch?

Das Javascript (ausgelagert):

function farbe_zelle(id,farbe) {
   if (document.all)
      document.all[id].style.backgroundColor=farbe;
   else
      if (document.getElementById)
         document.getElementById(id).style.backgroundColor=farbe;
      else
         if (document.layers)
            document.layers[id].bgColor=farbe;
}

Die Tabellenzelle:

<a href="formel1.php" target="_self"

onMouseOver="farbe_zelle('Zelle1','#6386C7')"
onMouseOut="farbe_zelle('Zelle1','#2C4F90')">

<td id="Zelle1" style="position:relative" bgcolor="#2C4F90">

<font face="Arial" size="-1">Formel 1</font>

</td>

</a>

Danke schon mal im Voraus.

Tom

Die CSS Struktur stimmt leider nicht überein, Du musst also browserabhängig reagieren (NS kennt z.B. "style" nicht).

Der beste Weg (hab ich mal bei Macromedia gelernt) ist, abhängig vom Browser Scriptvariablen zu setzen und diese dann mit eval() aufzulösen.

Beispiel (nicht getestet aber so funktioniert das Prinzip):

// Browserabhängig initialisieren

function init(){
  if (navigator.appName == "Netscape") {
    var layerRef="document.layers";
    var styleSwitch="";
  }else{
    var layerRef="document.all";
    var styleSwitch=".style";
  }
}

// Variablen mit eval() verwenden

function farbe_zelle(id,farbe) {
  eval(layerRef+'["'+id+'"]'+styleSwitch+'.background-color="'+farbe+'"');
}