Mark: Netscape4 Problem: document.div0 has no properties.

Hallo Community

Mit unten stehendem Script möchte ich verschiedene Layer nach Bedarf sichtbar machen. Das klappt auch soweit ganz gut - bis auf den NN4.x
Da bekomme ich immer nur die Meldung

document.div0 has no properties.

Hat jemand eine Lösung für mich. Danke.

numdivs=5

IE5=NN4=NN6=false
if(document.all)IE5=true
else if(document.layers)NN4=true
else if(document.getElementById)NN6=true

function init() {
 showDiv(0)
}
function showDiv( which ) {
 for(i=0;i<numdivs;i++) {
  if(NN4) eval("document.div"+i+".visibility='hidden'")
  if(IE5) eval("document.all.div"+i+".style.visibility='hidden'")
  if(NN6) eval("document.getElementById('div"+i+"').style.visibility='hidden'")
 }
 if(NN4) eval("document.div"+which+".visibility='visible'")
 if(IE5) eval("document.all.div"+which+".style.visibility='visible'")
 if(NN6) eval("document.getElementById('div"+which+"').style.visibility='visible'")
}

  1. Hallo Mark,

    Mit unten stehendem Script möchte ich verschiedene Layer nach Bedarf sichtbar machen. Das klappt auch soweit ganz gut - bis auf den NN4.x
    Da bekomme ich immer nur die Meldung

    document.div0 has no properties.

    wenn Du

    <style>
     #div0{ position:absolute; visibility:hidden; }

    </style>

    am Anfang der Seite einsetzt klappt es.

    Beste Grüße
    CurtB

    1. Hi CurtB,

      vielen Dank. Ich werds gleich mal versuchen.

      gruss
      Mark

      Hallo Mark,

      Mit unten stehendem Script möchte ich verschiedene Layer nach Bedarf sichtbar machen. Das klappt auch soweit ganz gut - bis auf den NN4.x
      Da bekomme ich immer nur die Meldung

      document.div0 has no properties.

      wenn Du

      <style>
      #div0{ position:absolute; visibility:hidden; }

      </style>

      am Anfang der Seite einsetzt klappt es.

      Beste Grüße
      CurtB

      1. Hallo nochmal,

        <style>
        #div0{ position:absolute; visibility:hidden; }

        ^^^^^^^^^^^^
        vielleicht musst Du hier 'position:relative;' verwenden oder eine passende Angabe für die divs mit top und left machen.

        Beste Grüße
        CurtB

        1. Hi,

          hat nicht ganz geklappt. die divs sind in der ext. css-Datei in einem divholder deklariert:

          #divholder {position:relative;top..;left..;width...;height...;}
          #divholder #div0 {position:absolute;top:0px;left:0px;.....}
          #divholder #div1 {position:absolute;top:0px;left:0px;.....}

          Das mache ich, weil die divs in einer zentrierten Tabelle sind ich ich die absolute Positionierung der divs nicht direkt vornehmen kann.
          Irgendeine Idee?

          Gruss
          Mark

          Hallo nochmal,

          <style>
          #div0{ position:absolute; visibility:hidden; }
                               ^^^^^^^^^^^^
          vielleicht musst Du hier 'position:relative;' verwenden oder eine passende Angabe für die divs mit top und left machen.

          Beste Grüße
          CurtB

          1. Hi auch,

            #divholder {position:relative;top..;left..;width...;height...;}
            #divholder #div0 {position:absolute;top:0px;left:0px;.....}
            #divholder #div1 {position:absolute;top:0px;left:0px;.....}
            Das mache ich, weil die divs in einer zentrierten Tabelle sind ich ich die absolute Positionierung der divs nicht direkt vornehmen kann.
            Irgendeine Idee?

            gibt es dazu ne URL ?

            Grüsse

            Cyx23

            1. Hi auch,

              #divholder {position:relative;top..;left..;width...;height...;}
              #divholder #div0 {position:absolute;top:0px;left:0px;.....}
              #divholder #div1 {position:absolute;top:0px;left:0px;.....}
              Das mache ich, weil die divs in einer zentrierten Tabelle sind ich ich die absolute Positionierung der divs nicht direkt vornehmen kann.
              Irgendeine Idee?

              gibt es dazu ne URL ?

              Hallo Cyx

              nö. leider gibts noch keine Adresse.

              Grüsse

              Cyx23

              Gruss
              mark

          2. Hi Mark,

            #divholder {position:relative;top..;left..;width...;height...;}
            #divholder #div0 {position:absolute;top:0px;left:0px;.....}
            #divholder #div1 {position:absolute;top:0px;left:0px;.....}
            Das mache ich, weil die divs in einer zentrierten Tabelle sind ich ich die absolute Positionierung der divs nicht direkt vornehmen kann.
            Irgendeine Idee?

            "in einer zentrierten Tabelle" sollte m.E. #div0 {position:relative;top:0px;left:0px;.....} ausreichen, evtl. ist für nn4 eine eigene css Definition per Javascript sinnvoll.

            Grüße,
            CurtB

            1. Hi Mark,

              #divholder {position:relative;top..;left..;width...;height...;}
              #divholder #div0 {position:absolute;top:0px;left:0px;.....}
              #divholder #div1 {position:absolute;top:0px;left:0px;.....}
              Das mache ich, weil die divs in einer zentrierten Tabelle sind ich ich die absolute Positionierung der divs nicht direkt vornehmen kann.
              Irgendeine Idee?

              "in einer zentrierten Tabelle" sollte m.E. #div0 {position:relative;top:0px;left:0px;.....} ausreichen, evtl. ist für nn4 eine eigene css Definition per Javascript sinnvoll.

              ich habe insgesamt vier #div's , die wie folgt aufgerufen werden:

              <td height="200" width="288">
                <div id="tabholder">
                  <div id="div0"><p>Das ist div 0</p></div>
                  <div id="div1"><p>Das ist div 1</p></div>
                  <div id="div2"><p>Das ist div 2</p></div>
                  <div id="div3"><p>Das ist div 3</p></div>
                </div>
              </td>

              Wenn ich jeden einzelnen relativ positioniere, dann hängen die sich untereinander und das td wird bis ins endlose nach unten gezogen. Absolut zum #tabholder bleiben aber alle an einer Stelle.

              Ich bin nicht so der JS-Kenner, aber spreche ich die divs überhaupt korrekt an mit

              if(NN4) eval("document.div"+i+".visibility='hidden'")

              oder muss ich den tabholder mit einbeziehen?

              Grüße,
              CurtB

              Gruss
              Mark

              1. Hi Mark,

                Ich bin nicht so der JS-Kenner, aber spreche ich die divs überhaupt korrekt an mit
                if(NN4) eval("document.div"+i+".visibility='hidden'")
                oder muss ich den tabholder mit einbeziehen?

                die sind bei Netscape4 auf jeden Fall verschachtelt, bei anderen Browsern
                kann es so klappen. Also N4 wie "document.tabholder.document.div"+i+".
                Für N4 kann man notfalls auch zusätzlich layer und ilayer reinschreiben,
                aber einfacher wäre es ohne. Den "tabholder" würde ich aber möglichst
                weglassen, evtl. <span> statt <div>.
                Zumal ein absolut psoitioniertes div in einer Tabelle bei N4 sowieso
                die ganze Seite zerlegen dürfte.

                Grüsse,

                Cyx23