Roland Krysl: Positionierbare Layer mit verschiedenen Grafiken

Liebe Liste,
auf meiner Seite habe ich folgendes Problem:
 Positionierbare Layer (deswegen auch Layer, trotz
Browserkrieg) sollen ein Bild enthalten, das sich bei Mausbewegung ändert.
Bisher ist es mir gelungen, positionierbare Layer zu erstellen,
die unter Netscape UND MSIE funktionieren, Bildwechsel ist auch kein
Problem, wenn man Layer in der Funktion anspricht. Nur bei mehrerern
Layern haut es nicht hin.
Weiß jemand eine Möglichkeit, positionierbare Bereiche, die sich
ÜBEREINANDER anordnen lassen, ohne Layer zu erstellen? Selfhtml weiß da nichts.
Man braucht anscheinend tatsächlich Layer.
Oder weiß jemand, wie man die einzelnen Layer mit der JAvascript-Funktion
im Head korrekt anspricht? Mit
document.layers[#].document.image.src=sowieso kann ich die Layers in
meiner Seite nicht erreichen.  Bsp. mit mit dynamisch positionierbaren
Layers à la Münz unter http://www.8ung.at/krysl/index.html, aber leider eben
OHNE Bildchenwechsel.
Mit Bildchen-wechsel-dich, aber dann leider ohne positionierbare Layer unter
www.8ung.at/krysl/undex.html. (Die Layerei geht leider nicht unter Netscape
6.0).

Ich wäre wirklich dankbar über jede Form von Hilfe, inzwischen auch über geistlichen
Beistand.

Grüße, Roland

  1. Hallo,

    Positionierbare Layer [...] sollen ein Bild enthalten, das sich bei Mausbewegung ändert.

    [...]

    Weiß jemand eine Möglichkeit, positionierbare Bereiche, die sich
    ÜBEREINANDER anordnen lassen, ohne Layer zu erstellen? Selfhtml weiß da nichts.

    Wenn die Layer sowieso nur je ein einzelnes Bild enthalten sollen, kannst du doch einfach die Bilder selbst ausrichten:

    <img src="bild.gif" style="position:absolute;top:10px;left:50px;z-index:1;" />

    Oder weiß jemand, wie man die einzelnen Layer mit der JAvascript-Funktion
    im Head korrekt anspricht? Mit
    document.layers[#].document.image.src=sowieso kann ich die Layers in
    meiner Seite nicht erreichen.

    1. Du musst einen Index für das Bild angeben:
    document.images[0].src = sowieso;
                  ^^^^
    außerdem ist das "s" an "images" natürlich wichtig.

    2. Versuch mal, den Layer zuerst mit open() zu öffnen:
    </selfhtml/javascript/objekte/document.htm#open>
    und dann mit close() zu schließen

    Robert

    http://www.designauswahl.here.de
    mit kostenlosem Webseiten-Generator ROBE.dit
    [more than a HTMLE.dit]

  2. Moin!

    Positionierbare Layer (deswegen auch Layer, trotz
    Browserkrieg) sollen ein Bild enthalten, das sich bei Mausbewegung ändert.

    Auch Netscape 4 kann Layer so: <div id="name" style="position:absolute">Inhalt</div>. Da braucht man eigentlich keine <layer>.

    Bisher ist es mir gelungen, positionierbare Layer zu erstellen,
    die unter Netscape UND MSIE funktionieren, Bildwechsel ist auch kein
    Problem, wenn man Layer in der Funktion anspricht. Nur bei mehrerern
    Layern haut es nicht hin.

    Es geht aber. Hängt natürlich davon ab, wie du deine Funktionen schreibst. :)

    Weiß jemand eine Möglichkeit, positionierbare Bereiche, die sich
    ÜBEREINANDER anordnen lassen, ohne Layer zu erstellen? Selfhtml weiß da nichts.
    Man braucht anscheinend tatsächlich Layer.

    Richtig. Und das Zeigen und Verstecken und Bilderaustauschen cross-browser-kompatibel geht in Javascript so:

    // Erstmal ein paar Objekte testen...
    ns4 = (document.layers)? true:false
    ie4 = (document.all)? true:false
    v6 = (document.getElementById)? true:false

    // Funktion zum Bilderwechsel. Anzugeben sind:
    // - Bildname wie in <img name="BILDNAME>
    // - Das Bildobjekt, welches stattdessen dorthin soll (preload)
    //   (das kann man ohne Preload auch ganz schnell auf URL-Angaben umstricken ;) )
    // - Die ID des Layers, in dem sich das Bild befindet (nur eine Layerebene!)
    function changeImage(imgName,imgObj,layerid)
    {
      if (document.images[imgName])
      {
        document.images[imgName].src = eval(imgObj+".src");
      }
      else if (ns4)
      {
        document.layers[layerid].document.images[imgName].src = eval(imgObj+".src");
      }
    }

    // Layer anzeigen
    function showlayer(layerid)
      {
      if (ns4) document.layers[layerid].visibility = "show"
      else if (v6) document.getElementById(layerid).style.visibility = "visible";
      else if (ie4) document.all[layerid].style.visibility = "visible"
      }

    // Layer verstecken
    function hidelayer(layerid)
      {
      if (ns4) document.layers[layerid].visibility = "hide"
      else if (v6) document.getElementById(layerid).style.visibility = "hidden";
      else if (ie4) document.all[layerid].style.visibility = "hidden"
      }

    Getestet unter MSIE 4+ , Netscape 4+ und Opera 5+ auf jeweils Windows und Mac.

    Hoffe, das hilft ein wenig. :)

    - Sven Rautenberg

    1. Moin!

      Positionierbare Layer (deswegen auch Layer, trotz
      Browserkrieg) sollen ein Bild enthalten, das sich bei Mausbewegung ändert.

      ,danke für den Tip. Das ist dann mein letzter Versuch, sonst tausche ich
      die ganzen Layer aus. Ist eigentlich einfacher, aber ich wollte wissen, wieso das
      ohne Gelayere so schön funktioniert, mit fünf verschiedenen layern, deren ID
      ständig wechselt, eben nicht.

      Vielen Dank für den geistigen und geistlichen Beistand,
      Roland

      // Layer verstecken
      function hidelayer(layerid)
        {
        if (ns4) document.layers[layerid].visibility = "hide"
        else if (v6) document.getElementById(layerid).style.visibility = "hidden";
        else if (ie4) document.all[layerid].style.visibility = "hidden"
        }

      Getestet unter MSIE 4+ , Netscape 4+ und Opera 5+ auf jeweils Windows und Mac.

      Hoffe, das hilft ein wenig. :)

      • Sven Rautenberg