Bild in einem Layer (Netscape) ansprechen, der in Tabellen geschachtelt wird.
Tom
- javascript
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:
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
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.
Hallo Tom
habe Deine Testseite ausprobiert - der aergerliche Effekt ist leider reproduzierbar.
Der Source-Code:
da ist mir nichts faules aufgefallen (allerdings habe ich keine so guten JS-Kenntnisse, bin Neuling).
Was mir aber jetzt seit NN-4.73 x-mal untergekommen ist: ich habe irgendeinen kleinen JS-
Mist gebaut, der klappt nicht, ich brüte, erkenne den Fehler, verbessere ihn, klappt trotzdem nicht.
X-mal durchgehen, mit SelfHTML-Referenz vergleichen, muss doch alles gehen...
Rechner resetten, klappt immer noch nicht. Gibts nicht...
File auf andere Maschine, online aufrufen (ist vielleicht nur lokal....) - nix.
Letzte Idee: neues File anlegen, und den ganzen Code rüberkopieren. Mal sehen.
Und klappt!!!
Vielleicht hast Du auch diesen komischen Effekt, dass alles richtig
dasteht, der NN das File aber nicht mehr 'leiden' kann.
(Ich wollte das mal dann posten, wenn ich mir wirklich sicher bin, dass das reproduzierbar ist
und nicht an mir und/oder meinem System liegt. Aber als Anfänger ist man vorsichtig, weil man
nicht viel vom Innenleben der Browser versteht und sich nicht lächerlich machen will.)
(Andererseits hat das der Netscape 4.6 nie gemacht, und zu seinen Zeiten
habe ich mir noch mehr Fehler geleistet.)
Solltest Du es probieren und es ist bei Dir auch so, so lass michs bitte wissen - es ist wirklich
lästig und man kommt sich solange blöd vor, bis andere das gleiche feststellen.
Wüsche Dir Erfolg
Uwe.
Hallo Uwe
habe Deine Testseite ausprobiert - der aergerliche Effekt ist leider reproduzierbar.
Danke :-(((
...
Vielleicht hast Du auch diesen komischen Effekt, dass alles richtig
dasteht, der NN das File aber nicht mehr 'leiden' kann.
»» ...
Solltest Du es probieren und es ist bei Dir auch so, so lass michs bitte wissen - es ist wirklich
lästig und man kommt sich solange blöd vor, bis andere das gleiche feststellen.
Das Testfile ist ein extra gebautes Beispiel, um den Fehler isoliert betrachten zu können.
Im Ursprungsfile, das wesentlich grösser und komplexer ist, habe ich exakt dasselbe Problem.
Ich denke nicht, dass der Fehler von der Datei herrührt. :-(
Danke trotzdem fürs testen.
Vieleicht weiss jemand anderes noch ein Tip ...
Grüsse
Tom
Hallo Uwe
habe Deine Testseite ausprobiert - der aergerliche Effekt ist leider reproduzierbar.
Danke :-(((
Das Testfile ist ein extra gebautes Beispiel, um den Fehler isoliert betrachten zu können.
Im Ursprungsfile, das wesentlich grösser und komplexer ist, habe ich exakt dasselbe Problem.
Ich denke nicht, dass der Fehler von der Datei herrührt. :-(Danke trotzdem fürs testen.
Vieleicht weiss jemand anderes noch ein Tip ...
Grüsse
Tom
Hallo Tom,
das ist auch nicht der Grund. Bin jetzt auf das Problem gekommen.
Bei mir funktioniert document.layers[<Layer>].document.write(text)
im Netscape stur solange nicht bis das <div> im Dokument durch <layer> ersetzt ist. Offensichtlich ist das NN-Layermodell manchmal
nur dann korrekt, wenn auch der eigentlich obsolete layer-tag dasteht.
Unerfreulich fuer uns.
Tschuess
Uwe
ersetzt wird.