Netscape & Opera ändern die Hintergrundfarbe nicht :(
Gerhard Schlager
- dhtml
Hallo!
Ich hab schon einmal hier vergeblich danach gefragt.
Wieso ändert der NN4 und der Opera 5 die Hintergrundfarbe eines Layers nicht.
Mein JavaScript müsste eigentlich stimmen, da im NN4 wenigstens eine Message kommt, wenn ich über den Layer mit der Maus fahre, aber im Opera tut sich gar nichts (JavaScript ist aktiviert!).
Hier mein Script und der Layer:
-------------------------------
<html>
<head>
<style>
#aDiv { position: absolute; }
.js { color: white; background-color: orange; layer-background-color: orange; }
</style>
<script language="JavaScript">
<!--
function initEventHandlers(id)
{
if (document.layers)
{
var lyr = eval('document.' + id)
lyr.onmouseover = function(evt)
{
lyr.bgColor = 'red';
alert(evt.type);
};
lyr.onmouseout = function(evt)
{
lyr.bgColor = 'orange';
alert(evt.type);
};
}
};
function ChangeColor(id, color)
{
if (document.all)
{
var lyr = eval('document.all.' + id);
lyr.style.backgroundColor = color;
}
else if (document.getElementById)
document.getElementById(id).style.backgroundColor = color;
};
//-->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body OnLoad="initEventHandlers('aDiv')">
<div id="aDiv" class="js" onmouseover="ChangeColor('aDiv', 'red');" onmouseout="ChangeColor('aDiv', 'orange');">DAS IST EIN TEST EINES LAYERS</div>
</body>
</html>
-----------------------------
Das Problem schein in der Funktion initEventHandlers zu liegen. Dort funktioniert alles richtig, außer das die Farbe (bgColor) nicht gesetzt wird (müsste aber, weil die Message kommt auch).
Bin schon am Verzweifeln. Ist es denn unmöglich, einen so einfachen Effekt für die wichtigsten Browser zum Funktionieren zu bringen?
BITTE HELFT MIR, ICH BIN AM VERZWEIFELN! :(
MfG
Gerhard
Hallo!
Ich hab schon einmal hier vergeblich danach gefragt.
Wieso ändert der NN4 und der Opera 5 die Hintergrundfarbe eines Layers nicht.
Mein JavaScript müsste eigentlich stimmen, da im NN4 wenigstens eine Message kommt, wenn ich über den Layer mit der Maus fahre, aber im Opera tut sich gar nichts (JavaScript ist aktiviert!).
Das Problem schein in der Funktion initEventHandlers zu liegen. Dort funktioniert alles richtig, außer das die Farbe (bgColor) nicht gesetzt wird (müsste aber, weil die Message kommt auch).
Bin schon am Verzweifeln. Ist es denn unmöglich, einen so einfachen Effekt für die wichtigsten Browser zum Funktionieren zu bringen?
BITTE HELFT MIR, ICH BIN AM VERZWEIFELN! :(
MfG
Gerhard
Ich hab leider von diesen Event-Handlern nicht die leiseste Ahnung, aber trotzdem Vermutungen. Du kannst in verschiedene Fallen getappt sein.
1. Netscape 4 unterstützt onmouseover/out nur bei Links. Deswegen könnte es mit dem onmouseover/out im <div> nicht klappen.
2. Bei Opera kann's genauso danebengehen (bin mir nicht sicher).
3. Netscape 4 kennt kein document.all und kein document.getelementbyid, sondern document.layers. Dieser Fall ist bei dir aber nicht berücksichtigt.
4. Ein kurzer Blick auf opera.com zeigte mir hier (http://www.opera.com/docs/specs/js/), daß document.getelementbyid.style.backgroundcolor eine Methode ist, keine Eigenschaft. Kann durchaus sein, daß deine Zuweisung schlicht falsch ist, sondern das als Befehl programmiert werden muß. (...style.backgroundcolor('Red'); ).
Soweit erstmal
- Sven Rautenberg