Sandra Weissengruber: Script Error

Hi Kollegen, wir haben da ein kleines problem mit NC 4.
entweder übersehen wir was ich weiss es nicht.
wenn mir da bitte wer helfen könnte, wäre ich sehr dankbar.
Sandra
unter IE 4 läuft das alles wunderbar (ist auch mit frontpage gebaut)
wenn man das ganze unter netscape betrachtet kommt folgendes:
JavaScript Error: http:////Sandra/fingerspiel.html, line 25:

document.layers["" + name] has no properties.

hier der code:
<html>

<head>

<link rel="STYLESHEET" href="../s_style.css" type="text/css"> (hat für das problem aber keine bedeutung)
<script language="javascript">

<!--  auskommentieren
      if (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) >=3))
      || ((navigator.appName == "Microsoft Internet  Explorer")&&(parseInt(navigator.appVersion.substring(0,1))

=4)))

{var version=true}

/* Browserabfrage: Layer-Object bekannt? */
if (document.layers)
      {ns = 1; ie = 0;}
else  {ns = 0; ie = 1;}

/* Funktion Dokument initialisieren */ /* Besser: Macromedia Script */
function initm() {if (ns) layer = document.MENU;
                 if (ie) layer = MENU.style;
     }

/* Funktion Schicht anzeigen */
function show(name) {if (ns)
                    {document.layers['' + name].visibility = "show";}
     else
     {document.all['' + name].style.visibility = "visible";}
                    }
    
function hide(name) {if (ns)
                    {document.layers['' + name].visibility = "hide";}
     else
     {document.all['' + name].style.visibility = "hidden";}
     }
    
/* Menu-Ebene verschieben rechts */
function movel() {if(ns)
                 {document.MENU.left=-50;}            
     else
     {MENU.style.left=-50;}
     }
                
/* Menu-Ebene verschieben links */
function mover(){if(ns)
                {document.MENU.left=-210;}      
     else
    {MENU.style.left=-210;}
    }
//-->
</script>

der Rest der Seite: (steht auf http://members.aon.at/weissengruber/Sandra/fingerspiel.html)

  1. Sandra
    unter IE 4 läuft das alles wunderbar (ist auch mit frontpage gebaut)
    wenn man das ganze unter netscape betrachtet kommt folgendes:
    JavaScript Error: http:////Sandra/fingerspiel.html, line 25:

    document.layers["" + name] has no properties.

    hier der code:

    {document.layers['' + name].visibility = "show";}

    Tja, leider geht das so nicht . Du kannst den Layer entweder nur mit dem Index oder über das Objekt ansprechen d.h. document.layers[1] oder document.layers.meinlayer. Als workaraound kann ich dir das anbieten:
    z = document // oder wo/was auch immer kannste natürlich auch fest einbauen.

    function getindex(namen,z)
            {
                    for (q=0 ;q<z.layers.length; q++)
                    {
                  
                    if (z.layers[q].name == namen)  return q

    }
            return false
            }
    dann in der form aufrufen:
        
    document.layers[getindex(name,document)].machedas

    Timo

    1. danke timo, für den tip
      war ganz korrekt, nur das problem war viel subtiler.
      selbiges beispiel stammt aus weblehre.de (dhtml/menu.html)
      und das läuft ja, wie man sieht.
      unser fehler war ganz einfach: <p>......</p> im layer.
      NC verträgt offensichtlich keine absätze in einem layer
      war im endeffekt nicht schwierig
      gruss christian

      Sandra
      unter IE 4 läuft das alles wunderbar (ist auch mit frontpage gebaut)
      wenn man das ganze unter netscape betrachtet kommt folgendes:
      JavaScript Error: http:////Sandra/fingerspiel.html, line 25:

      document.layers["" + name] has no properties.

      hier der code:

      {document.layers['' + name].visibility = "show";}

      Tja, leider geht das so nicht . Du kannst den Layer entweder nur mit dem Index oder über das Objekt ansprechen d.h. document.layers[1] oder document.layers.meinlayer. Als workaraound kann ich dir das anbieten:
      z = document // oder wo/was auch immer kannste natürlich auch fest einbauen.

      function getindex(namen,z)
              {
                      for (q=0 ;q<z.layers.length; q++)
                      {
                    
                      if (z.layers[q].name == namen)  return q

      }
              return false
              }
      dann in der form aufrufen:
          
      document.layers[getindex(name,document)].machedas

      Timo