Tom: Bild in einem Layer (Netscape) ansprechen, der in Tabellen geschachtelt wird.

Beitrag lesen

Hallo Forum

Ich habe hier eine Erweiterung der 10. häufigsten JavaScript-Frage "Wie spreche ich Images in Layern (Netscape) an".
Das Ansprechen der Image-Objekte im Layer funktioniert in meinem Beispiel grundsätzlich richtig (siehe untere, nur rote Tabelle).
Ist jedoch der Layer in einer 2-fach geschachtelten Tabelle eingefügt (obere, gelb-rote Tabelle), enthält das entsprechende Image-Array keine Bilder mehr, das Image-Objekt lässt sich also nicht mehr ansprechen.

Der Source-Code:
   <html>
   <head>
      <title>Test-Dok</title>
      <script type="text/javascript" language="JavaScript">
<!-- JS-Funktion -->
         function testImage(sLayerName)
         {
            if(document.layers)
            {  
               iImgCount = document.layers[sLayerName].document.images.length;
               alert("Anzahl Bilder im Layer: "+ iImgCount);
            }
         }
         //-->
      </script>
    </head>
   <body>
<!-- Layer in 2-fach geschachtelter Tabelle: Der Alert gibt 0 Bild-Objekte zurück -->
      <table cellspacing="8" cellpadding="8" border="0" bgcolor="#ffffcc">
      <tr>
          <td>   </td>
          <td>            
            <table cellspacing="2" cellpadding="2" border="0" bgcolor="#ffccff">
            <tr>
               <td>
                  Bild in 2-fach geschachtelter Tabelle:
               </td>
               <td>
                  <div id="TestLayer" style="position:relative; z-index:1; visibility:show;">
                     <a href="#" onClick="testImage('TestLayer');return false;">
                        <img border="0" src="ima/perle.gif" width="80" height="80">
                     </a>
                  </div>
               </td>
            </tr>
            </table>
         </td>
      </tr>
      </table>
      <br><hr><br>
<!-- Layer in nur 1 Tabelle: Der Alert gibt die korrekte Anzahl Bild-Objekte zurück. -->
      <table cellspacing="2" cellpadding="2" border="0" bgcolor="#ffccff">
      <tr>
         <td>
            Bild in 1-fach geschachtelter Tabelle:
         </td>
         <td>
            <div id="TestLayer2" style="position:relative; z-index:1; visibility:show;">
               <a href="#" onClick="testImage('TestLayer2');return false;">
                  <img border="0" src="ima/perle.gif" width="80" height="80">
               </a>
            </div>
         </td>
      </tr>
      </table>
   </body>
   </html>

Das Beispiel lässt sich auch online unter http://195.127.155.198/test/test2.htm abrufen.

Fragen:

  • Was mache ich falsch ?
  • Können andere Forumsteilnehmer das Verhalten mit Netscape reproduzieren (dazu einfach auf die Bilder klicken)?
  • Gibt es einen Workaround (Bedingung: Ich brauche min. 2-fach geschachtelte Tabellen und ich muss die src-Eigenschaft des Image-Objektes ansprechen können, zwecks Mousover-Effekt)?

Ich hoffe, jemand kann mir dieses eigenartige Verhalten von Netscape erklären, bzw. eine Lösung für mein Problem aufzeigen kann.

Besten Dank im voraus.

Grüsse
Tom