Rainer: formular - hidden/visible

Möchte folgendes realisieren:
in einem Formular soll nur dann ein Texteingabefeld erscheinen,
wenn ich von einem Dropdownfeld einen gewissen Punkt gewählt habe.

Im InternetExplorer ganz leicht (am Ende Quelltext).
Leider versteht Netscape die display - Anweisung nicht...
Kann mir jemand einen geänderten Quelltext schreiben,
damit man in Ns/IE diese Funktion erhält ?
Danke im Voraus!
-------------
<html>
<head>
<SCRIPT language=JavaScript type=text/javascript>
<!--
i=0;
function Visual()
{
if(document.all) // IE 4
{
 if(document.all.auswahl.selectedIndex == 3)
 {
  document.all.feld1.style.display="inline";
 }
 else
 {document.all.feld1.style.display="none";
 }
}

if (document.layers) //Ns
{
document.layers[feld1].visibility = "show" ;
document.layers[feld1].visibility = "hide";
}

}
//-->
</SCRIPT>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="">
  <select name="auswahl" onClick="javascript:Visual()">
    <option selected>Welt</option>
    <option>Europa</option>
    <option>Land</option>
    <option>Personenname</option>
  </select>
  <DIV id=feld1 style="LEFT: 170px; POSITION: absolute; TOP: 15px; display:none">
    Name:<input type='text' value='' name='Name'></DIV>
</form>
</body>
</html>

  1. Hi,

    leider kennt Netscape kein <div>.
    Du musst mit dem <layer> tag arbeiten.

    Du kannst aber auch mit, document.write(":<input type=text name=Name>");

    Das Input Feld anzeigen lassen.

    Gruß

    Y

    1. Danke für den Vorschlag...
      aber wiederum hat der InternetExp mit <layer> Verständnis-Probleme !

      Bitte den in der 1.Mail angegebenen Quelltext so ändern, damit ich eindeutig sehe dass die Vorschläge auch wirklich funktieren.. ;-)

      1. Danke für den Vorschlag...

        Ich war wohl wieder zu langsam...

        aber wiederum hat der InternetExp mit <layer> Verständnis-Probleme !

        ist richtig. Der kennt das nämlich gar nicht. deswegen hätte man bei verwendung von ...layers[x]... auch den <layer></layer> Kram zusätzlich zum <div> einbauen müssen. Um sicherzugehen, das Netscape nicht durcheinander kommt, sollte man den layer auch eine andere ID als dem DIV verpassen...

    2. leider kennt Netscape kein <div>.

      (ohne Worte)

      Grüße,

      Utz

      1. netscape kann kein div in javascript ansprechen.

        1. Schreibe Dir am besten einmal ein kleines Script und überprüfe Deine Behauptung nochmals ;-))

          Grüße,
          Martin

          PS: Ich habe noch nie das layer-Tag verwendet...

          1. Hi,

            oh, sag mir mal bitte wie du dann auf <div name="bla"> in javascript zugreifst, wenn nicht mit "document.all.bla". Würd mich interssieren.

            Gruß

            Y

            1. Hi Y,

              oh, sag mir mal bitte wie du dann auf <div name="bla"> in javascript zugreifst, wenn nicht mit "document.all.bla". Würd mich interssieren.

              document.all für Netscape ?!?!? ist nicht dein ernst oder? das war ein witz ?! Hab ich mich bei deiner Frage etwa irgendwo verlesen? oder doch nicht?

              http://www.teamone.de/selfhtml/sfausles/tsfa_tdb.htm#a5
              http://www.teamone.de/selfhtml/tfb.htm
              http://dhtml.seite.net/anleitungen/h_1.html

              Netscape => document.layers
              IE => document.all

              ;-)

              lg bernhard

              1. Hi,

                document.all für Netscape ?!?!? ist nicht dein ernst oder? das war ein witz ?!

                Richtig erkannt, aber ich dachte das ist in meinem posting auch zum ausdruck gekommen.

                Mir wollte nur gerade jemand erzählen, dass er noch nie layer in NS verwendet hat sondern nur div .

                In Javascript gibts da allerdings ein prob, weil NS nicht auf div zugreifen kann, oder? da diese ja nur mit document.all angesprochen werden können, oder geht das mit document.layers auch

                Gruß

                Y

                1. Moin,

                  Richtig erkannt, aber ich dachte das ist in meinem posting auch zum ausdruck gekommen.
                  Mir wollte nur gerade jemand erzählen, dass er noch nie layer in NS verwendet hat sondern nur div .

                  das erzaehle ich dir auch ;)

                  http://www.wiro.de/start.htm -> wohnungssuche (scheiss ladezeit, ich weiss, und nach wie vor nicht NN6-tauglich, aber der ist ja eh noch nicht fertig ;)

                  lass dir mal den Quelltext des Frames mit mit der Karte nach dem Laden im Netscape anzeigen

                  Viele Gruesse,

                  n.d.p.

                2. In Javascript gibts da allerdings ein prob, weil NS nicht auf div zugreifen kann, oder? da diese ja nur mit document.all angesprochen werden können, oder geht das mit document.layers auch

                  Klickst Du eigentlich auch mal auf die Links, die extra fuer Dich gepostet werden? -- Solltest Du aber mal tun.

                  1. Hi,

                    Klickst Du eigentlich auch mal auf die Links, die extra fuer Dich gepostet werden? -- Solltest Du aber mal tun.

                    Habe ich mit Nein geantwortet, warum vollziehst du hier eine Prolepsis.

                    Gelegentlich klick ich Sie an, gelegntlich hab ich allerdings auch keine Zeit und dann vergess ichs eben ab und an.

                    Gruß

                    Y

                    1. Auch Hi!

                      Habe ich mit Nein geantwortet, warum vollziehst du hier eine Prolepsis.

                      Das war eine rhetorische Frage. Rhetorisch deshalb, weil Du die Antwort bereits vorher in Form Deiner Frage gegeben hast. Haettest Du auch nur eine der verlinkten Seiten mal ueberflogen, waere diese naemlich nicht noetig gewesen.

                      Gelegentlich klick ich Sie an, gelegntlich hab ich allerdings auch keine Zeit und dann vergess ichs eben ab und an.

                      ..., gelegentlich vergisst Du, dass Du eine Frage gestellt hast, auf die ja jemand antworten koennte (klar, kommt selten vor in so einem Forum, geb ich zu).

                      1. Hi,

                        na wir wollen wegen einer solchen Diskussion ja nicht gleich in die Luft gehen. Ich ab halt anfangs etwas falsch gedacht, dass kann ja mal vorkommen, normalerweiße halte ich dann halt auch an meinem Standpunkt fest. Klar sollte man sich dann vielleicht auch mal den ein oder anderen Link zum Thema ansehen, aber wie gesagt, ich war mir meiner Sache sicher und hab halt lieber noch mal schnell nachgefragt, als dokus zu durchstöbern und nichts wirklich neues zu finden.
                        Jetzt bin ich, denke ich, schlauer und beende nun meinen Senf zu dieser Diskussion.

                        Gruß

                        Y

                3. Hi Y

                  Also irgendwie reden wir alle anscheinend ziemlich aneinander vorbei hier! Da ich die Absicht hinter nd's link irgendwie nicht gecheckt habe, meld ich mich halt nochmal ;-)

                  Mir wollte nur gerade jemand erzählen, dass er noch nie layer in NS verwendet hat sondern nur div .

                  Er meinte wohl <layer> und <div>

                  In Javascript gibts da allerdings ein prob, weil NS nicht auf div zugreifen kann, oder? da diese ja nur mit document.all angesprochen werden können, oder geht das mit document.layers auch

                  was meinst du mit "auf div zugreifen kann"?

                  Wenn du einen <div name="div1">uepselon</div> hast, kannst du im Nestscape(>4) mit document.layers['div1'].visibility darauf zugreifen. Mit IE(>4) mit document.all.div1.style.visibility bzw. kürzer mit div1.style.visibility!

                  Kann aber auch sein, dass ich dein Problem jetzt immer noch nicht begriffen habe ;-)

                  Für weitere Recherchen nochmal der Link:
                  http://dhtml.seite.net/anleitungen/h_1.html

                  lg bernhard

                  1. Hi Bernhard,

                    Mir wollte nur gerade jemand

                    @uepselon: das war ich - ich wollte es nicht nur, ich t a t es!

                    erzählen, dass er noch nie layer in NS verwendet hat sondern nur div .

                    Er meinte wohl <layer> und <div>

                    genau!

                    Grüße,
                    Martin

                  2. Hi

                    Wenn du einen <div name="div1">uepselon</div> hast, kannst du im Nestscape(>4) mit document.layers['div1'].visibility darauf zugreifen. Mit IE(>4) mit document.all.div1.style.visibility bzw. kürzer mit div1.style.visibility!

                    Danke, genau das ist die Antwort auf meine Frage.

                    Gruß

                    Y

                    1. Hi Y

                      Wenn du einen <div name="div1">uepselon</div> hast, kannst du im Nestscape(>4) mit document.layers['div1'].visibility darauf zugreifen. Mit IE(>4) mit document.all.div1.style.visibility bzw. kürzer mit div1.style.visibility!

                      Danke, genau das ist die Antwort auf meine Frage.

                      Puuuuhh *schwitz* gottseidank, war ne ganz schön schwere Geburt *fg*
                      Aber jetzt können wir alle abends sorglos einschlafen, wo dieser Stein ausm Weg geräumt ist ;-)

                      lg bernhard

                  3. Moin,

                    Da ich die Absicht hinter nd's link irgendwie nicht gecheckt habe, [...]

                    hmm, man klicke auf den Link, und danach auf "Mietwohnungen" ('Wohungssuche' war eine Fehlinformation)
                    dann oeffnet sich im rechten Frame eine Karte mit lauter divs (NN 4 + IE>=5), die alle per JS angesprochen werden.
                    Das kann man im NN schoen im Quelltext sehen ;)

                    Viele Gruesse,

                    n.d.p.

  2. Hi
    im Hinblick auf
    <DIV id=feld1 style="LEFT: 170px; POSITION: absolute; TOP: 15px; display:none">...
    kann man folgendes nicht verwenden...

    if (document.layers) //Ns
    {
    document.layers[feld1].visibility = "show" ;
    document.layers[feld1].visibility = "hide";
    }

    feld1 müßte hier eine Variable sein, die eine zahl beinhaltet. Diese Zahl müßte der Nummer des anzusprechenden layers entsprechen. ist das also der z.B. der 6. Layer im Dokument, so müßte das eine 5 sein. Es wird ja bei 0 angefangen zu zählen. Weiterhin ist es wenig sinnvoll das <was auch immer> erst sichtbar zu machen und <keine Ahnung wieviele Milisekunden> (die der Client für die ausführung von der 1. Zeile braucht) später das dann wieder zu verstecken.

    Außerdem muß erst mal ein Layer existieren, den man ansprechen kann. <DIV ...> ist schonmal keiner.
    es müßte zusätzlich noch
    <LAYER ...></LAYER> geben, wenn es mit document.layers[X].visibility="..."; gehen soll.
    Hinzu kommt: im NN6 und der aktuellen Mozilla Version läuft das auch schon wieder ganz anders. hier ist weder document.layers noch document.all zu verwenden. da gibts dann was mit elementById (genaue schreibweise nicht bekannt. ich wäre ja fast schonmal darauf gekommen das zu zerlegen um zu verstehen, wie man das benutzt, aber da die Seite wo das hätte drinn vorkommen sollen inhaltlich so abgeändert wurde, das dies dafür nicht mehr zu verwenden war... (Wie das bei Vorabversionen von Seiten nunmal so ist: Irgendwer will das dann doch ganz anders haben))

    Das Ganze jetzt komplett umzustricken ist mir jetzt zu auffwendig. Deswegen nur ein kleines Beispiel, was ich hier noch auf der Festplatte liegen habe und was nur für Netscape ist War mal so zum ausprobieren...:
    Anstelle von layers[x] und des einbaus eines <layer> bereichs, kann man auch bei <div> bleiben und es mal so versuchen.
    <html>
    <head>
    <style type="Text/CSS">
    <!--
     #TEST { visibility:hidden; }
    //-->
    </style>
    <!-- Der Style bereich ist Notwending: sonst ...document.TEST has no properties... //-->
    </head>
    <body>
    <div ID="TEST" style="position:absolute; top:100px; left:20px;">
    HALLO
    </div>
    <script language="JavaScript" type="Text/JavaScript">
     window.document.TEST.visibility="show";
    </script>
    </body>
    </html>

    Auch muß DIV ein STYLE="POSITION:<irgendwas> (ALSO absoulute, fixed, relative, oder <hab ich vergessen>" enthalten. denn sonst heißt es wieder: ...has no properties...

    1. Dieses stylesheet notwendig?
      wenn ich es weglasse, kommt bei mir keine Meldung ..

      <style type="Text/CSS">
      <!--
      #TEST { visibility:hidden; }
      //-->
      </style>
      <!-- Der Style bereich ist Notwending: sonst ...document.TEST has no properties... //-->

      ist etwas an foldendem Test-Quelltext auszusetzen ?
      ---------

      <html>
      <head>
      <script language="JavaScript" type="Text/JavaScript">
      i=1;
      function Change()
      {
      if(i%2)
      {
      i++;
      if (document.layers) //Ns
       {window.document.TEST.visibility="hide";}

      if(document.all) // IE 4
       { document.all.TEST.style.display="none";}
      }

      else
      {i++;
      if (document.layers) //Ns
       {window.document.TEST.visibility="show";}

      if(document.all) // IE 4
       { document.all.TEST.style.display="inline";}
      }

      }
      </script>
      </head>
      <body>
      <form>
      <input type="button" value="Drueck" name="button" onClick="Change()">
      <div ID="TEST" style="position:absolute; top:100px; left:20px;">
      HALLO
      </div>
      <script language="JavaScript" type="Text/JavaScript">
      if (document.layers) //Ns
      {
      window.document.TEST.visibility="show";
      }

      if(document.all) // IE 4
      { document.all.TEST.style.display="inline";
      }
      </script>
      </form>
      </body>
      </html>

      1. Dieses stylesheet notwendig?
        wenn ich es weglasse, kommt bei mir keine Meldung ..

        <style type="Text/CSS">
        <!--
        #TEST { visibility:hidden; }
        //-->
        </style>
        <!-- Der Style bereich ist Notwending: sonst ...document.TEST has no properties... //-->

        Naja. Irgendwo hatte ich mal diese Fehlermeldung erhalten. (wurde angezeigt, wenn man in die Adresszeile javascript: eingegeben hat) Wo das war weis ich nicht mehr. Es hatte jedenfalls zur Folge, das ich das bei derartiegen Dingen immer eingebaut habe...

        Bei diesem Problem hier gibts ohne das nur den Nebeneffekt, das HALLO beim laden der Seite sichtbar ist. Wäre ja normal, wenn ich visibillity:hidden; nicht noch im div-Tag in die style-Angaben mit aufgenommen hätte. Also: Obwohl da von Anfang an das Ganze auf unsichtbar steht, hat es so nicht funktioniert. Esrt, wenn man das mit im <style>... macht, läufts so, wie ich es mir dachte, das es sein soll.

        Naja dann schönen abend noch...

  3. Hallo Rainer,

    in diesem Thread wurde vieles gesagt, aber relativ wenig auf dein Problem bezogen. Sehen wir zu, dass da Ordnung rein kommt:

    Eine ganze Menge Probleme hast du:

    Im InternetExplorer ganz leicht (am Ende Quelltext).
    Leider versteht Netscape die display - Anweisung nicht...

    Das versteht NN schon. Allerdings kann eine Displayanweisung im nachhinnein nicht geändert werden.

    <SCRIPT language=JavaScript type=text/javascript>

    Achte bitte auf korrekte "" um die Attribute. Hier rächt sich ganz schnell jede Nachlässigkeit

    function Visual()
    {
    if(document.all) // IE 4
    {
    if(document.all.auswahl.selectedIndex == 3)
    {
      document.all.feld1.style.display="inline";
    }
    else
    {document.all.feld1.style.display="none";
    }
    }

    if (document.layers) //Ns
    {
    document.layers[feld1].visibility = "show" ;

    So wie du hier feld1 schreibst, wird feld1 als Variable angesehen.
    Richtig

    document.layers["feld1"].visibility = "hide";

    <select name="auswahl" onClick="javascript:Visual()">

    NN kennt keinen Eventhandler onclick in Auswahllisten. Dein Freund ist onchange="Visual()"

    Die Notation: onclick="javascript:" ist falsch. Ein Eventhandler ist bereits JavaScript. Einige Browser reagieren mit Fehlermeldungen auf solch einen Aufruf.

    <DIV id=feld1 style="LEFT: 170px; POSITION: absolute; TOP: 15px; display:none">

    wie bereits gesagt: visibility ist die richtige Angabe. du mußt diesbezüglich dein Script im IE ändern.

    Name:<input type='text' value='' name='Name'></DIV>
    </form>

    Trotzdem wird dein Bemühen nicht von Erfolg gekrönt sein. Der NN 4zeigt zwar das Wort Name an, aber nicht das Inputfeld.
    Der Grund:

    Ein Layer bzw. ein absolute positionierter Div werden im NN 4 als eigene Dokumente angesehen.
    Das heißt übersetzt:
    Dein Feld Name ist im NN 4 kein Bestandteil des Formulares form1. Es ist für ihn ein einzelstehendes Formularfeld. Da diese nicht von einem Formtag eingeschlossen wird, zeigt er es auch nicht an.

    Eine Möglichkeit wäre, die Datei so aufzubauen:

    <form name="form1" method="post" action="">
      <select name="auswahl" onchange="Visual()">
        <option selected>Welt</option>
        <option>Europa</option>
        <option>Land</option>
        <option>Personenname</option>
      </select>

    </form>
    <div id="feld1" style="left:170px;position:absolute;top:15px; visibility:hidden;">
    <form name="form2" method="post" action=""> Name:<input type="text" value="" name="Name"></form></div>

    Du mußt dann nur jeweils den Inhalt des Formelementes in das Hauptformular übertragen.

    Viele Grüße

    Antje