Opera 6.04 Rollovereffekt durch className-Wechsel funzt nicht
apstrakt
- dhtml
Hallo!
Ich habe mit Javascript einen Mouseover-Effekter für ein Menu programmiert, so daß beim "Reinfahren" mit der Maus in einen Menupunkt ein Untermenu eingeblendet wird, daß über CSS mit display:none ausgeblendet war. Dieses Ein- und Ausblenden wird dabei via Javascript über dynamisches Umsetzen der Klasse realisiert. Funktioniert super in MSIE und Mozilla/NN6+, leider aber überhaupt nicht in Opera 6.04. Woran liegt das?
Tschau,
apstrakt
PS. Hier noch die entscheidenden Code-Fragmente:
im HTML-Code steht etwa das hier:
<div id="menu1" class="menuLevel1">
<a href="..." onMouseover="menuEinblenden('menu1x1')">...</a>
<div id="menu1x1" class="menuLevel2">
...
</div>
...
</div>
CSS:
.menuLevel2 {
display:none;
}
.menuLevel2eingeblendet {
display:block;
...
}
JS:
function menuEinblenden(menuID) {
var e = document.getElementById(menuID);
if (e.className.indexOf("eingeblendet")!=-1) return; // da das Untermenu bereits eingeblendet
e.className += "eingeblendet";
}
Hallo,
Funktioniert super in MSIE und Mozilla/NN6+, leider aber überhaupt nicht in Opera 6.04. Woran liegt das?
An der bekannten DOM-Schwaeche von Opera < 7.
MfG, Thomas
Hi apstrakt,
[...] Dieses Ein- und Ausblenden wird dabei via Javascript über dynamisches Umsetzen der Klasse realisiert. Funktioniert super in MSIE und Mozilla/NN6+, leider aber überhaupt nicht in Opera 6.04. Woran liegt das?
Opera 6 kann zwar keine Klassen tauschen, aber den Wert von visibility: ändern.
LG Roland
Hallo Orlando,
Opera 6 kann zwar keine Klassen tauschen, aber den Wert von visibility: ändern.
Ach ja!? Wie denn?
Auf dem "üblichen" Weg:
e = document.getElementById("id");
e.style.visibility = "hidden";
geht es jedenfalls nicht, auch nicht via
e.setAttribute("style","visibility:hidden");
und auch (das abwegige)
e.visibility="hidden"
funktioniert nicht.
*ratlosdenkopfschüttel*
Ist Opera 7 denn in dieser Hinsicht besser?
Gruß,
apstrakt
Hi apstrakt,
Auf dem "üblichen" Weg:
e = document.getElementById("id");
e.style.visibility = "hidden";
geht es jedenfalls nicht,
-> document.getElementById("id").style.visibility = "hidden";
Wahrscheinlich liegt's an der Kürzung mittels "e", denn obige Zeile funktioniert garantiert.
Ist Opera 7 denn in dieser Hinsicht besser?
Natürlich. Überzeuge dich selbst:
http://www.opera.com/download/index.dml?step=3&opsys=Windows&lng=en&platform=Windows
LG Roland
Hallo!
Vielen Dank für Eure Hilfe. Da Ihr so hartnäckig insistiert habt, daß es funktioniert, habe ich mühselig den Fehler gesucht.
Wahrscheinlich liegt's an der Kürzung mittels "e", denn obige Zeile funktioniert garantiert.
Nee, nee. Das funktioniert so schon. In der Funktion, in der ich das visibility-Setzen durchführe, wird vorher so einiges anderes gemacht, was Opera zum Aussteigen bringt. DAS war also das eigentliche Problem, nicht das e.style.visibility="hidden".
Nochmal vielen Dank.
Schöne Grüße,
apstrakt
Tag auch
Auf dem "üblichen" Weg:
e = document.getElementById("id");
e.style.visibility = "hidden";
geht es jedenfalls nicht ...
Doch geht es, man muß es nur richtig machen.
function wechdamit(layerid)
{
document.getElementById(layerid).style.visibility = "hidden";
}
^^^ ohne "Gänsefüßchen"!
und <a href="#" onClick="wechdamit('testdiv')">verschwinde!</a> funktioniert mit Opera völlig problemlos.
Thomas J.