onMouseOver Problem
muffinOTR
- javascript
Hi,
ich bin gerade ein wenig am Verzweifeln. Und zwar versuche ich mit dem Event-Handler "OnMouseOver" mehrere Funktionen auszuführen. Doch leider erscheint bei mir folgender Java-Script-Fehler:
Warum erscheint dieser Fehler, wenn ich folgenden Quelltext habe?
=== Quelltext ========================================
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
var ie4 = (document.all) ? true : false;
function showLayer(layerName){
if (ie4) {document.all[layerName].style.visibility = "visible"}
}
function hideLayer(layerName){
if (ie4) {document.all[layerName].style.visibility = "hidden"}
}
</SCRIPT>
<style type="text/css">
#layer1 {position: absolute; z-index: 59900; visibility: hidden; left: 117px; top: 99px;}
#layer2 {position: absolute; z-index: 59900; visibility: hidden; left: 117px; top: 79px;}
#layer3 {position: absolute; z-index: 59900; visibility: hidden; left: 117px; top: 59px;}
</style>
</header>
<body>
<a href='#' onMouseOver="showLayer('layer1'); hideLayer('layer2'); hideLayer('layer3');">Irgendein Link</a>
Hat einer von Euch eine Lösung? Es wäre super klasse, wenn mir einer helfen könnt. Vielleicht stehe ich ja einfach nur auf dem Schlauch!?
Euch schon mal vielen Dank!
Gruss,
marc
document.getElementById(layerName).style...
Marco
Hi Marco,
vielen Dank für Deine schnelle Antwort,...
document.getElementById(layerName).style...
...aber jetzt erscheint folgenden Fehlermeldung:
gruss,
marc
dahinter muss noch was du ändern möchtest, z.B.:
...style.width = "200px";
Marco
dahinter muss noch was du ändern möchtest, z.B.:
...style.width = "200px";
das mache ich ja hiermit: ...style.visibility = "visible"
ich glaube das Problem liegt darin, dass ich mit dem OnMouseOver nicht mehrmals eine Funktion mit verschiedenen Variablen ausführen kann.
Also: onMouseOver="showLayer('layer1'); hideLayer('layer2'); hideLayer('layer2');"
Ist das möglich?
gruss,
marc
»»'document.getElementById[...].style' ist Null oder kein Obekt'
Heisst doch, du willst ein Element ansprechen das nicht definiert ist, check mal Deine Bezeichnungen.
das mache ich ja hiermit: ...style.visibility = "visible"
probier es doch auch mal alternativ mit display="none" und display="block"
Ist das möglich?
Ja, ist auf jeden Fall möglich!
Gruss AndreD
Hi AndreD, vielen Dank für Dein Antwort!
»»'document.getElementById[...].style' ist Null oder kein Obekt'
Heisst doch, du willst ein Element ansprechen das nicht definiert ist, check mal Deine Bezeichnungen.
habe nochmal alles überprüft. alle Elemente sind definiert. die erste Funktion, also showLayer('layer1), führt er aus, doch bei der zweiten auszuführenden Funktion, also hideLayer('layer2'), bekommt er Probleme. Da zeigt er mir jetzt sogar als Fehlermeldung "Objekt erforderlich" an.
das mache ich ja hiermit: ...style.visibility = "visible"
probier es doch auch mal alternativ mit display="none" und display="block"
es funktioniert beides!
Ist das möglich?
Ja, ist auf jeden Fall möglich!
das wird es dann wohl leider sein! :-(
Hi,
dat kann doch nu nich so schwierig sein ;-)
Nimm mein Script, das sollte ueberall funktionieren.
Nutzt Du Nc 4x? Damit gehen natuerlich weder Dein Script, noch document.getElementById().
Gruesse Joachim
<html>
<head>
<style type="text/css">
#ebene0 {
position: absolute;
top: 100px;
left: 100px;
width: 200px;
height: 200px;
visibility: hidden;
background-color: red;
layer-background-color: red;
border: none;
}
</style>
<script language="javascript1.2" type="text/javascript">
// some known objects
var nc = !!(document.captureEvents && !document.getElementById);
var ie4 = !!(document.all && !document.documentElement);
// einfache div-layer referenzieren
// !!!!!!!!! ACHTUNG HIER KEIN ZEILENUMBRUCH !!!!!!!!!!
function dRefS(num) {return (nc? document.layers[num] : (ie4? document.all[num].style : document.getElementById(num).style))}
function dpl(id, stat) {
dRefS(id).visibility = stat? "visible" : "hidden";
}
</script>
</head>
<body marginheight="0" marginwidth="0">
<a href="#" onmouseover="dpl('ebene0',1)" onmouseout="dpl('ebene0',0)">link</a>
<div id="ebene0">Erstes Div</div>
</body>
</html>
Hi Joachim,
dat kann doch nu nich so schwierig sein ;-)
Nimm mein Script, das sollte ueberall funktionieren.
Du hast vollkommen recht!!!! Einfach Perfekt! Es läuft einfach mit allen Browsern!!!! Herrlich!
Die super vielen Dank!
Gruss,
marc
Marc,
Haste auch runde Klammern hinter getElementById?
Gunnar
Ja, es sieht jetzt so aus:
function showLayer(layerName){
document.getElementById(layerName).style.visibility = "visible"
}
Ja, es sieht jetzt so aus:
function showLayer(layerName){
document.getElementById(layerName).style.visibility = "visible"
Öhhh, mach doch bitte da mal ein Semikolon hin---------------------^
AndreD