Joern: Layer ein/-ausblenden im IE 5 UND Netscape 6

Hallo,
ich möchte mittels Mausklick einen Layer ein-/ bzw. ausbelnden lassen.
Im IE4/5 und NS 4 kein Problem:

function show(name) {if (ns)
                    {document.layers['' + name].visibility = "visible";}
     else
     {document.all['' + name].style.visibility = "visible";}
                    }
    
function hide(name) {if (ns)
                    {document.layers['' + name].visibility = "hidden";}
     else
     {document.all['' + name].style.visibility = "hidden";}
     }

Ich möchte aber, dass auch der NETSCAPE 6 das macht.
Mit folgendem Script funktionierts aber auch nur leider im IE5:

function layerwechsel(welchesdiv){
if (Layer1.style.display=="none")
Layer1.style.display=""
else
Layer1.style.display="none";
}

Also wie kann ich einen Layer per Mausklick im Netscape 6 ein/-bzw. ausbelnden lassen???
Vielen Dank schon mal jetzt
Joern

  1. Hallo,

    funktioniert deine Browserabfrage bei NS 6 überhaupt oder wird dann der Code für IE ausgeführt ???
    Probier mal mit der Abfrage NS - if (document.layer)

    Mfg. Bob

    Hallo,
    ich möchte mittels Mausklick einen Layer ein-/ bzw. ausbelnden lassen.
    Im IE4/5 und NS 4 kein Problem:

    function show(name) {if (ns)
                        {document.layers['' + name].visibility = "visible";}
         else
         {document.all['' + name].style.visibility = "visible";}
                        }
        
    function hide(name) {if (ns)
                        {document.layers['' + name].visibility = "hidden";}
         else
         {document.all['' + name].style.visibility = "hidden";}
         }

    Ich möchte aber, dass auch der NETSCAPE 6 das macht.
    Mit folgendem Script funktionierts aber auch nur leider im IE5:

    function layerwechsel(welchesdiv){
    if (Layer1.style.display=="none")
    Layer1.style.display=""
    else
    Layer1.style.display="none";
    }

    Also wie kann ich einen Layer per Mausklick im Netscape 6 ein/-bzw. ausbelnden lassen???
    Vielen Dank schon mal jetzt
    Joern

    1. Hallo,

      funktioniert deine Browserabfrage bei NS 6 überhaupt oder wird dann der Code für IE ausgeführt ???
      Probier mal mit der Abfrage NS - if (document.layer)

      Meine Browserabfrage funktioniert.
      Ich glaube auch, dass eher meine zweite möglichkeit (dom) eher in die richtige richtung geht, oder?

      Joern

      1. Hai,

        habe mich mit dem Thema NS 6 noch nicht so beschäftigt, kann aber nicht glauben, das NS auf einmal keine Layer unterstützt. Probiers doch mal mit der gleichen Syntax wie bei IE 5 document.all.
        Fällt mir sonst nichts dazu ein.

        Ciao, Bob

        Hallo,

        funktioniert deine Browserabfrage bei NS 6 überhaupt oder wird dann der Code für IE ausgeführt ???
        Probier mal mit der Abfrage NS - if (document.layer)

        Meine Browserabfrage funktioniert.
        Ich glaube auch, dass eher meine zweite möglichkeit (dom) eher in die richtige richtung geht, oder?

        Joern

        1. Muß mich korrigieren. Es gibt keine Layers mehr, aber Div's.
          Siehe Beitrag unten.

          Hai,

          habe mich mit dem Thema NS 6 noch nicht so beschäftigt, kann aber nicht glauben, das NS auf einmal keine Layer unterstützt. Probiers doch mal mit der gleichen Syntax wie bei IE 5 document.all.
          Fällt mir sonst nichts dazu ein.

          Ciao, Bob

          Hallo,

          funktioniert deine Browserabfrage bei NS 6 überhaupt oder wird dann der Code für IE ausgeführt ???
          Probier mal mit der Abfrage NS - if (document.layer)

          Meine Browserabfrage funktioniert.
          Ich glaube auch, dass eher meine zweite möglichkeit (dom) eher in die richtige richtung geht, oder?

          Joern

  2. also für ns6 nimmst Du absolut positionierte divs mit id

    und dann:

    function layerwechsel(welchesdiv)
         {
         if (document.getEelementById("Layer1").style.display=="none")
               {document.getEelementById("Layer1").style.style.display="inline";}
         else
         document.getEelementById("Layer1").style.display="none";
         }

    oder statt display das gute alte visibility nehmen. Kommt drauf an welchen Effekt Du erzielen willst.
    Mit display kann man bei relativ positionierten divs, die folgenden divs mitrutschen lassen, abhängig
    davon ob der div da ist oder nicht

    lg Hobbes
    <img src="http://server.datenwerk.at/~til/img/hobbes.gif" alt="">

  3. Hi Joern,

    beim dynamischen Ändern der Display-Eigenschaft hat die NS6-Preview(!) einen Bug - Fazit: jetzt keine Sorgen machen, aufs Produkt warten und dann nochmal loslegen.

    Grüße,

    Utz

  4. Hi

    versuchs mal in etwa so :

    var NS  = (document.layers) ? 1:0;
    var IE  = (document.all) ? 1:0;
    var DOM = (document.getElementById) ? 1:0;

    function getObj(name) {
    if (IE && document.all[name])   {return document.all[name].style;}
    if (DOM && document.getElementById(eval("'"+name+"'"))) {return document.getElementById(name).style}  
    if (NS && document.layers[name]) {return document.layers[name];}
    return 0;
    }

    Layer einblenden  :
    getObj(layerName).visibility="visible";

    Layer ausblenden  :
    getObj(layerName).visibility="hidden";

    gruss
    Jens

    1. Danke Jens, jetzt funktioniert's auch im Netscape 6

      Gruss
      Joern