vOjEL: Layer allgemein über Frame ansprechen

Hallo,

ich habe ein kleines Problem mit der Darstellung von Layern in einem anderen Frame.

Ich habe im i-net aber schon folgenden DOM gefunden:
   parent.framename.document.getElementById("namederebene").style.visibility = "visible";

Dies gilt meines Wissens nach aber nur für den MS IE.
Ich bräuchte nun 2 Sachen.
Ich will den o.g. Code allgemeingültig haben, d.h. der Framename & der Ebenenname soll der Funtion übergeben werden.
   parent.frames[...].document.getElementById("layername").style.visibility = "visible";
Die Syntax habe ich mir eben ausgedacht. Sind da Fehler drin ?
In den Eckigen sollte die Zahl des Frames übergeben werden und "layername" enthält den in CSS definierten Layernamen.

Zum Zweiten bitte den Code auf Netscape abgestimmt.

Vielen Dank.
Gruß,
vOjEL

  1. Hallo,

    Ich will den o.g. Code allgemeingültig haben, d.h. der Framename & der Ebenenname soll der Funtion übergeben werden.
       parent.frames[...].document.getElementById("layername").style.visibility = "visible";
    Die Syntax habe ich mir eben ausgedacht. Sind da Fehler drin ?

    IE 5+, Opera 5+, Netscape 6+, Mozilla usw.:

    function ShowHideLayer(framename,layerid,vis)
    {
      parent.frames[framename].document.getElementById(layerid).style.visibility = vis;
    }

    Aufruf:

    ShowHideLayer("abc","xyz","visible");
    oder
    ShowHideLayer("abc","xyz","hidden");

    Zum Zweiten bitte den Code auf Netscape abgestimmt.

    Netscape 4.x (sofern in der document.layers-Collection vorhanden, was absolute Positionierung voraussetzt):

    parent.frames[framename].document.layers[layerid].style.visibility = vis;

    MfG, Thomas

    1. Moin,

      der folgende TAG scheint nicht zu funktionieren:
        parent.frames[1].document.getElementById("bs").style.visibility = "visible";

      Wenn ich den Teil: "parent.frames[1]." rausnehme, dann funzt die ganze Sache zwar, aber es wird ja im Originalframe (dort wo es ausgeführt wird) dargestellt. Es soll aber in einen anderen Frame.

      Warum geht das nicht ?..... :(

      Gruß,
      vOjEL

      1. Hallo,

        der folgende TAG scheint nicht zu funktionieren:

        Ich sehe da kein Tag ...

        parent.frames[1].document.getElementById("bs").style.visibility = "visible";

        Wenn ich den Teil: "parent.frames[1]." rausnehme, dann funzt die ganze Sache zwar, aber es wird ja im Originalframe (dort wo es ausgeführt wird) dargestellt. Es soll aber in einen anderen Frame.

        Ohne die konkrete Framestruktur zu kennen, kann man da nur raten. Hier wird offenbar der zweite Frame unterhalb vom parent-Frameset ausgewaehlt (Zaehlung beginnt bei 0). Verwende besser den Framenamen, wie ich es bereits schrieb und beachte die "Eltern-Kind"-Beziehungen der verschachtelten Elemente.

        MfG, Thomas