Bilderwechsel in verschachtelten layer im NN4
Fant
- dhtml
tach
ich weiss dieses thema kommt immerwieder...ich hab auch schon das archiv durchsucht, aber ich kann mein problem trotzdem nicht lösen.
ich hab folgendes aufklappmenu:
<div id="layerframe" style="position:relative; z-index:0;">
<div id="sub1" class="ueber-uns">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td><a href="...." onMouseOut="cp('img11','menudeutsch/ueberuns_1','sub1');" onMouseOver="cp('img11','menudeutsch/ueberuns_1a','sub1');"><img src="../images/menudeutsch/ueberuns_1.gif" width="77" height="26" border="0" name="img11"></a><br></td>
</tr>
</table>
</div>
(.....)
</div>
und die cp funktion sieht folgendermassen aus:
function cp(imageName, fileName, layer)
{
if (browser == "NN4")
{
if (layer)
//eval('window.document.layerframe.document.layers["'+layer+'"].document.images["'+imageName+'"].src = imgTmp.src');
self.document.layers["layerframe"].document.layers[layer].document.images[imageName].src = "../images/" + fileName + ".gif";
else
document.images[imageName].src = "../images/" + fileName + ".gif";
}
(...)
}
läuft in IE, NN6 und Opera aber nicht im NN4. was mach ich falsch?
hab gelesen die layers dürfen nur "absolute" ausgerichtet sein für NN4. ging aber auch nicht.
den äusseren layer verwende ich nur um die inneren relativ zu positionieren. kann ich vielleicht dieses problem anders lösen?
mit nur einem layer hat das bilderwechseln nämlich bestens funktioniert.
gruss
Fant
Hi,
<div id="layerframe" style="position:relative; z-index:0;">
<div id="sub1" class="ueber-uns">
Netscape 4 kann mit einem id-Attribut praktisch nichts anfangen. Er geht nach name.
Cheatah
es will immernoch nicht.
mach ich das so korrekt?
HTML:
<div id="layerframe" style="position:relative;">
<div id="sub1" name="Nsub1" class="ueber-uns">
(...)
</div>
<div>
JAVASCRIPT:
document.layerframe.document.layers.Nsub1.document.images[imageName].src = "../images/" + fileName + ".gif";
gruss
fant
Hi,
es will immernoch nicht.
glaube ich Dir :-)
mach ich das so korrekt?
Nein:
<div id="layerframe" style="position:relative;">
Ich sehe hier kein name-Attribut.
<div id="sub1" name="Nsub1" class="ueber-uns">
Btw: In class="ueber-uns" wird das Ding positioniert, richtig? Ansonsten ist es für Netscape 4 kein Layer.
document.layerframe.document.layers.Nsub1
Hm, hier solltest Du ein wenig konsequenter werden...
Cheatah
ok nochmal schön ;-)
ist halt durch ausprobieren alles ein wenig durcheinander...
HTML:
<div id="layerframe" name="layerframe" style="position:relative">
<div id="sub1" name="sub1" class="ueber-uns">
(... cp('img11','menudeutsch/ueberuns_1a','sub1'); ....)
</div>
</div>
CSS:
.ueber-uns
{
position:absolute;
top:5px;
left:8px;
z-index:1;
visibility:hidden;
}
JAVASCRIPT:
function cp(imageName, fileName, layer)
{
document.layerframe.document.layers[layer].document.images[imageName].src = "../images/" + fileName + ".gif";
}
gruss
fant
Moin!
CSS:
.ueber-uns
Klassen-Namen bitte ohne irgendwelche Striche und Unterstriche, nur Buchstaben und Zahlen! Ansonsten gibts Müll in den Browsern - die erkennen u.U. die Klasse nicht.
Nur mal so kurz zwischenrein geworfen...
- Sven Rautenberg
das wars leider nicht....
Hi,
das wars leider nicht....
ich vermisse eine aktuelle, nach Deinen Änderungen gültige Fehlerbeschreibung - und eine URL, bei der man das betrachten kann :-)
Cheatah
mach ich doch gerne ;-)
ich hab auch schon versucht den äusseren layer "layerframe" wegzunehmen. hat aber auch nicht funktioniert und ich weiss dann nicht mehr wie ich die layers relativ positionieren kann.
die "id" und "name" heissen nun gleich ist das ein problem? habs auch schon umbenannt hat aber nichts genützt.
HTML:
<div id="layerframe" name="layerframe" class="rahmen">
<div id="sub1" name="sub1" class="ueberuns">
<a href="bienenberg.php?lang=d&text=100" onMouseOut="cp('bild11','menudeutsch/ueberuns_1','sub1');" onMouseOver="cp('bild11','menudeutsch/ueberuns_1a','sub1');"><img name="bild11" src="../images/menudeutsch/ueberuns_1.gif" width="77" height="26" border="0"></a><br>
</div>
</div>
CSS:
.rahmen
{
position:relative;
}
.ueberuns
{
position:absolute;
top:5px;
left:8px;
z-index:2;
visibility:hidden;
}
JAVASCRIPT:
function cp(imageName, fileName, layer)
{
if (NN4)
{
if (layer)
{
eval('document.layerframe.document.'+layer+'.document.'+imageName+'.src = "../images/'+fileName+'.gif"');
}
else
document.images[imageName].src = "../images/" + fileName + ".gif";
}
else // IE, NN6, OP
{
document.images[imageName].src = "../images/" + fileName + ".gif";
}
}
ich hab im javascriptteil auch schon alle möglichen schreibweisen durchprobiert.
javascript melden so auch keinen fehler mehr, aber das bild wird doch nicht gewechselt.
sonst kam immer der fehler:
"document.layerframe.document.sub3.document.bild13 has no
properties"
sub3: der layer der übergeben wird
bild13: der name img
gruss
fant
die URL der seite:
www.atticstudio.ch/bieni
Hi,
ich hab auch schon versucht den äusseren layer "layerframe" wegzunehmen.
ist es eigentlich der äußere oder der äußer_st_e Layer?
die "id" und "name" heissen nun gleich ist das ein problem?
Nein. Ein Problem ist nur, wenn die selbe ID mehrmals im Dokument auftaucht. Nicht für Netscape 4 zwar, aber ansonsten schon.
eval('document.layerframe.document.'+layer+'.document.'+imageName+'.src = "../images/'+fileName+'.gif"');
Hast Du eigentlich mal der Reihe nach alert(document.layerframe), alert(document.layerframe.document), alert(document.layerframe.document.layers[layer]) usw. probiert?
Und um einen blöden Gedanken zu beruhigen: Setz doch mal bitte testweise ein "window." vor das erste "document". Ach ja: eval() is evil(), Du solltest wann immer es geht darauf verzichten - in jeder Programmiersprache.
javascript melden so auch keinen fehler mehr, aber das bild wird doch nicht gewechselt.
Bist Du sicher (und ich meine: _sicher_), dass die Grafik-Ressource auch auf Deinem Server verfügbar ist und korrekt angezeigt werden kann?
die URL der seite:
www.atticstudio.ch/bieni
Eine URL beginnt mit dem Protokoll ;-) Allerdings finde ich da keinen solchen Code.
Cheatah