Tom: visibility Netscape 4 Problem

Hi!

kann mir jemand sagen wieso netscape 4* bei volgendem script in der javaconsole von netscape die fehlermeldung

document.layers[formu] has no properties.

bringt?

function sichtbar(formu) {
 if (document.all) {
 document.all[formu].style.visibility="visible";
 }
 if (document.getElementById){
 document.getElementById(formu).style.visibility="visible";
    }
 else {
 document.layers[formu].visibility = "visible";
 }
}
function unsichtbar(formu) {
 if (document.all) {
 document.all[formu].style.visibility="hidden";
 }
 if (document.getElementById){
 document.getElementById(formu).style.visibility="hidden";
    }
 else {
 document.layers[formu].visibility = "hidden";
 }
}

Das Script ist dazu da, Formularfelder auszublenden wenn ein Submenu via DHTML eingeblendet wird, da dieses sonst beim Überlappen unter dem Formularfeld angezeigt wird. Mit z-index lässt sich da ja auch nix machen.

gruss

tom

  1. Servus Tom

    kann mir jemand sagen wieso netscape 4* bei volgendem script in der

    »»javaconsole von netscape die fehlermeldung

    document.layers[formu] has no properties.
    bringt?

    jepp, ich denke schon, daß ich hier helfen kann. Netscape weicht hier leicht vom Schema ab.
    Tausch doch das hier mal aus:

    document.layers[formu].visibility = "visible";

    document.layers[formu].visibility="show";

    document.layers[formu].visibility = "hidden";

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

    Müßte dann funktionieren

    Gruß Goofy

    1. Servuus!

      Danke für deinen Tip! Allerdings hatte ich das auch schon ausprobiert (obwohl es ja mit hidden und visible trotzdem laufen müsste!!) mit dem gleichen Ergebnis: immer dieselbe Fehlermeldung.

      AAAAARRRRGGGG

      Tom

      Servus Tom

      kann mir jemand sagen wieso netscape 4* bei volgendem script in der
      »»javaconsole von netscape die fehlermeldung
      document.layers[formu] has no properties.
      bringt?
      jepp, ich denke schon, daß ich hier helfen kann. Netscape weicht hier leicht vom Schema ab.
      Tausch doch das hier mal aus:

      document.layers[formu].visibility = "visible";
      document.layers[formu].visibility="show";

      document.layers[formu].visibility = "hidden";
      document.layers[formu].visibility="hide";

      Müßte dann funktionieren

      Gruß Goofy

      1. Servuus!

        Danke für deinen Tip! Allerdings hatte ich das auch schon ausprobiert (obwohl es ja mit hidden und visible trotzdem laufen müsste!!)

        manchmal ja, manchmal nein (eigene Erfahrung)

        document.forms['formular].document.layers['layername'] .....

        Gruesse
        Wilhelm

        1. auch hier sag ich danke für den tip. doch leider funktioniert es damit auch nicht!

          Servuus!

          Danke für deinen Tip! Allerdings hatte ich das auch schon ausprobiert (obwohl es ja mit hidden und visible trotzdem laufen müsste!!)

          manchmal ja, manchmal nein (eigene Erfahrung)

          document.forms['formular].document.layers['layername'] .....

          Gruesse
          Wilhelm

          1. waere hilfreich

            ansonsten wird Dir wohl keiner helfen koennen.

  2. hi,

    document.layers[formu] has no properties.

    bedeutet: NC4x kennt dieses Objekt nicht, sprich: es ist nix da.
    Wie sieht es denn im html/css aus? Falls Du ein Div verwendest, hast Du es auch per css positioniert? Bei "layer": stimmt die ID?
    Hast Du gar layer/divs verschachtelt, was eine andere Referenzierung bedeutet?

    Gruesse  Joachim

    1. Hi, also

      im css:

      <style type="text/css">
      <!--
      #formu {position:static; visibility:visible}
      -->
      </style>

      static deswegen, da bei absoluter oder relativer angabe netscape die select box gar nicht mehr anzeigt!

      div wird verwendet wie folgt:

      <div id="formu"><select name="fakultaet" size="1">
      <option value="a" selected>alle</option>
      <option value="0">blabla</option>
      <option value="1">blabl</option>
      <option value="2">blaa</option>
      </select></div>

      also keine layer/div verschalchtelung.

      aufgerufen wir das ganze mit

      <a href="#" onMouseOut="sichtbar('formu'); swapImgRestore()" onMouseOver="swapImage('blabla_site_point','','../images/blabla_site_point_over.gif',1);  P7_autoLayers(0,'SubMenu'); unsichtbar('formu')" class="leftNaviText">BLABLA</a>

      Vielleicht kannst du mir jetzt eine Tip geben *hoff*. Habe allerdings die Befürchtung, dass sich die irgenwelche *.js dateien die implementiert werden nicht vertragen, wobei dier fktn. sichtbar/unsichtbar wirklich nicht viele variablen enthält die woanders mit auftauchen könnten.

      gruss

      tom

      hi,

      document.layers[formu] has no properties.

      bedeutet: NC4x kennt dieses Objekt nicht, sprich: es ist nix da.
      Wie sieht es denn im html/css aus? Falls Du ein Div verwendest, hast Du es auch per css positioniert? Bei "layer": stimmt die ID?
      Hast Du gar layer/divs verschachtelt, was eine andere Referenzierung bedeutet?

      Gruesse  Joachim

      1. static deswegen, da bei absoluter oder relativer angabe netscape die select box gar nicht mehr anzeigt!

        Das tut Netscape dann, wenn das Ganze nicht zwischen <form> </form> liegt. Das duerfte Dein Fehler und damit wiederum meine erste Antwort an Dich relevant sein. Mit "static" hat das gar nichts zu tun.

        Ein Form ist hier nicht zu finden.

        <div id="formu"><select name="fakultaet" size="1">
        <option value="a" selected>alle</option>
        <option value="0">blabla</option>
        <option value="1">blabl</option>
        <option value="2">blaa</option>
        </select></div>

        Gruesse
        Wilhelm

        1. Sorry,

          mein fehler hab ich nicht aufgelistet. der ganze div-part steht eigentlich in ner tabelle und um die tabelle ist der form tag gelegt. also auch da liegt das verflixte problem nicht.

          gruss

          tom

          static deswegen, da bei absoluter oder relativer angabe netscape die select box gar nicht mehr anzeigt!

          Das tut Netscape dann, wenn das Ganze nicht zwischen <form> </form> liegt. Das duerfte Dein Fehler und damit wiederum meine erste Antwort an Dich relevant sein. Mit "static" hat das gar nichts zu tun.

          Ein Form ist hier nicht zu finden.

          <div id="formu"><select name="fakultaet" size="1">
          <option value="a" selected>alle</option>
          <option value="0">blabla</option>
          <option value="1">blabl</option>
          <option value="2">blaa</option>
          </select></div>

          Gruesse
          Wilhelm

          1. hi,

            vermutlich schon.

            Afaik kann NC4x "static" gar nicht. Falls er es koennte, waere es nicht moeglich, Formelemente _innerhalb_ in ein div-layer zu stecken, das Formtag aber draussen zu lassen. Fuer NC4x ist ein div.layer wie ein eigenes Dokument, dokumentuebergreifende Formulare gibts aber nicht.

            Also: absolut oder relativ positionieren, und die gesamte Form in den div-layer, dann sollte es gehen.

            Gruesse  Joachim

  3. Hi tom,
    gib der div einen namen, sonst macht ns4 nix:
    <div id="formu" name="formu">

    lg Spiff

    1. nochwas: es muss doch position:absolute sein, sonst ist das für NS4 kein Layer
      zudem brauchst Du innerhalb der Div einen form-tag

      das formular wird dann wie in ns4 so üblich über document.layers["formu"].document.forms[0] angesprochen

      lg Spiff

      1. habt tausend Dank!

        es funktioniert jetzt.

        • position auf relative
        • div-tag um den form-tag legen
        • und ausser div id="bla" auch name="bla"

        Das war des rätsels lösung. Prima

        nochwas: es muss doch position:absolute sein, sonst ist das für NS4 kein Layer
        zudem brauchst Du innerhalb der Div einen form-tag

        das formular wird dann wie in ns4 so üblich über document.layers["formu"].document.forms[0] angesprochen

        lg Spiff