Noch mal Layer

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Noch mal Layer

    Hi Leute,
    erst mal Dank für die Reaktionen beim letzten Mal.

    Ich versuche, Layer dynamisch mit js zu generieren, aber im Netscape werden die Style-angaben nicht interpretiert. Der zweite Layer (lay2) wird überhaupt nicht mehr angezeigt.
    Woran kann es liegen?


    <html>
    <head>
    </head>

    <script>
    table = "<table width = \"220\" border = \"0\" cellspacing = \"0\"><tr><td valign = \"top\" width = \"220\"><b>Text15</b><br>Der Hans wurde eines Tages geboren und lebt auch heute noch frech und fr&ouml;hlich weiter.</td></tr></table>";
    a = "lay1";
    </script>
    <body>
    STYLEPROBLEME
    <script>

    document.writeln('<DIV ID="' + a + '" style="POSITION:absolute; LEFT:0px; TOP:40px; width:197px; overflow:hidden; VISIBILITY:hidden; Z-INDEX:2">');
    document.writeln(table);
    document.writeln("</DIV>");
    </script>
    <div id = "lay2" style="POSITION:absolute; LEFT:300px; TOP:80px; width:197px; overflow:hidden; VISIBILITY:visible; Z-INDEX:1">
    <table width="200" bgcolor="white" cellpadding="0" cellspacing="0" border="0">
    <tr><td>Der erste Text</td></tr>
    </table>
    </div>
    </body>
    </html>


    Eine zweite Frage:
    warum functioniert das hier nicht in Netscape?
    var lay= document.layers["lay2"].document
    lay.open()
    lay.write(text)
    lay.close()
    Zuletzt geändert von samurai; 29.08.2002, 10:42.
    Der frank-o-matic ist kein Sirius Cybernetic Corporation Produkt!

  • #2
    Re: Layer mit JS dynamisch generieren und ändern

    Ich versuche, Layer dynamisch mit js zu generieren, aber im Netscape werden die Style-angaben nicht interpretiert. Der zweite Layer (lay2) wird überhaupt nicht mehr angezeigt.
    Woran kann es liegen?
    funktioniert es denn im netscape, wenn du den selben code mal nicht dynamisch generierst, sondern statisch in einer textseite ausprobierst?

    Eine zweite Frage:
    warum functioniert das hier nicht in Netscape?
    var lay= document.layers["lay2"].document
    lay.open()
    lay.write(text)
    lay.close()
    sag mal dazu, von welchem netscape du redest, 4er oder 6er?
    den <layer>-tag und damit auch die zugehörigen javascript-methoden kennt nämlich nur der 4er, im 6er hat man diesen layer-kram gottseidank entfernt.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Re: Layer mit JS dynamisch generieren und ändern

      nochmal zur zweiten frage:

      du versuchst mit den methoden des layer-objektes auf einen div-bereich zuzugreifen, dass kann natürlich nicht funzen!
      um
      var lay= document.layers["lay2"].document
      einsetzen zu können, musst du einen wirklichen netscape-layer haben, also einen <layer>-tag.
      du versuchst aber damit auf einen <div> mit der id "lay2" zuzugreifen, das geht natürlich nicht.

      beachten: divs bezeichnet man zwar umgangssprachlich als layer, aber richtige <layer> nach der alten netscape-definition sind dies nicht!
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Es funktioniert auch mit den Netscape-layer nicht:
        <layer id = "b1">
        Hallo
        </layer>

        <script>
        var lay=document.layers["b1"].document;
        lay.open();
        lay.write("Hallihallo");
        lay.close();
        </script>

        Es soll auf 4-er browsern laufen.
        Man kann auch auf NC4+ div's mit ihrer id setzen, dann dynamisch positionieren etc. Aber nicht mit document.write generieren oder den Inhalt ändern.

        Zumindes kriege ich es nicht hin (würg)
        Der frank-o-matic ist kein Sirius Cybernetic Corporation Produkt!

        Kommentar


        • #5
          du kannst diese layer auf zwei arten ansprechen, entweder über ihre nummer im dokument
          document.layers[0]...
          oder aber über ihren namen
          document.Layername...

          aber den namen oder die id in klammern ["id"] klappt bei denen nicht.

          näheres siehe http://www.selfhtml.net/javascript/objekte/layers.htm
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            p.s.: du musst dem layer mit name="xyz" einen namen geben, eine id="xyz" versteht der netscape bei layern nicht.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Ich habe jetzt was gefunden, das zu laufen schein. Ich teste es noch und stelle dann später das script hier hin.
              Danke!
              Der frank-o-matic ist kein Sirius Cybernetic Corporation Produkt!

              Kommentar


              • #8
                DAS SCRIPT

                Das läuft auf PC: IE 5* - 6, NC 4.7 - 6.22 (mit kleiner Einschränkung)


                /*************************************************************
                * leistet:
                * Autor: frank-o-matic
                * Erstellungsdatum:29.08.02
                * modifiziert am/von:
                * was modifiziert:
                *************************************************************/



                <html>
                <style type="text/css">
                .l1{position:absolute;left:0px;top:200px;width:197px;visibility:visible;z-Index:2;overflow:hidden;}
                .l2{position:absolute;left:0px;top:200px;width:197px;visibility:visible;z-Index:3;overflow:hidden;}
                </style>
                <head>
                <title>FUNKTIONEN TESTEN</title>
                </head>

                <script>
                var b ="Der letze Text";
                vtable = "<table width = \"220\" border = \"1\" cellspacing = \"0\"><tr><td valign = \"top\" width = \"220\"><b>Text15</b><br>Der Hans wurde eines Tages geboren und lebt auch heute noch frech und fr&ouml;hlich weiter.</td></tr></table>";
                textbloc = "<table width = \"240\"><tr><td valign=\"top\"><b>Mission</b><br>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</td></tr><tr><td><img src=\"pix/dummy.gif\" width=5 height=10 border=0></td></tr><tr><td><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td><img src=\"pix/gruen.gif\" width=6 height=6 border=0></td><td><img src=\"pix/blau.gif\" width=6 height=6 border=0></td><td><img src=\"pix/grau_1.gif\" width=6 height=6 border=0></td></tr></table></td></tr></table>";
                bild ="<img src = \"pix/rot.gif\" width = \"100\" height = \"100\">";

                function schreiben(txt,lay){
                if(document.layers){
                with (document.layers[lay].document) {
                open();
                write(txt);
                close();
                }
                }
                else if(document.all)document.all[lay].innerHTML=txt
                else if(document.getElementById)document.getElementById(lay).innerHTML=txt
                }



                function hide_layer(lay){
                if(document.layers){
                document.layers[lay].visibility = "hidden";
                }
                else if(document.all)document.all[lay].style.visibility="hidden";
                else if(document.getElementById)document.getElementById(lay).style.visibility="hidden";
                }

                function show_layer(lay){
                if(document.layers){
                document.layers[lay].visibility = "visible";
                }
                else if(document.all)document.all[lay].style.visibility="visible";
                else if(document.getElementById)document.getElementById(lay).style.visibility="visible";
                }

                function move_layer(lay,x,y){
                if(document.layers){
                document.layers[lay].left = x;
                document.layers[lay].top = y;
                }
                else if(document.all){
                document.all[lay].style.visibility="visible";
                document.all[lay].style.left = x;
                document.all[lay].style.top = y;
                }
                else if(document.getElementById){
                document.getElementById(lay).style.left = x;
                document.getElementById(lay).style.top = y;
                }
                }

                function z_move_layer(lay,z){ //läuft nicht auf NC 6.2.2
                if(document.layers){
                document.layers[lay].zIndex = z;
                }
                else if(document.all)document.all[lay].style.zIndex = z;
                else if(document.getElementById)document.getElementById(lay).zIndex = z;
                }

                </script>
                <body >
                <script>
                a = "lay1";
                document.writeln('<div id="'+a+'" class="l1" >');
                document.writeln(textbloc);
                document.writeln('</div>');

                document.writeln('<div id=lay2" class="l2" >');
                document.writeln(bild);
                document.writeln('</div>');
                </script>

                <a href = "javascript:schreiben(b,'lay1')">&auml;ndern</a> <br>
                <a href = "javascript:hide_layer('lay1')">verstecken</a><br>
                <a href = "javascript:show_layer('lay1')">zeigen</a><br>
                <a href = "javascript:move_layer('lay1',300,300)">verschieben</a><br>
                <a href = "javascript:z_move_layer('lay1',4)">auf Ebene verschieben</a><br>
                </body>
                </html>

                Oops, in der einen Tabelle werden gifs aufgerufen, die fehlen hier natürlich...
                Der frank-o-matic ist kein Sirius Cybernetic Corporation Produkt!

                Kommentar


                • #9
                  jetzt nimmst du hier noch die leerzeichen raus:
                  <a href = "java script:schreiben(b,'lay1')">ändern</a> <br>
                  <a href = "java script:hide_layer('lay1')">verstecken</a><br>
                  <a href = "java script:show_layer('lay1')">zeigen</a><br>
                  <a href = "java script:move_layer('lay1',300,300)">verschieben</a><br>
                  <a href = "java script:z_move_layer('lay1',4)">auf Ebene verschieben</a><br>

                  damit daraus das wird und dann funzt es auch schon:
                  <a href="javascript:schreiben(b,'lay1')">ändern</a><br>
                  <a href="javascript:hide_layer('lay1')">verstecken</a><br>
                  <a href="javascript:show_layer('lay1')">zeigen</a><br>
                  <a href="javascript:move_layer('lay1',300,300)">verschieben</a><br>
                  <a href="java script:z_move_layer('lay1',4)">auf Ebene verschieben</a><br>

                  gruss

                  Kommentar


                  • #10
                    samurai sagte doch schon, dass es funzt!

                    das leerzeichen zwischen java und script macht nur die blöde forumssoftware hier rein...
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X