N6 und onmousemove-Event für Flachschwimmer
MaxSmily
- javascript
Liebe Gemeinde,
ich möchte mit onMouseMove ein Div bewegen. Dafür habe ich für N6 die Funktion MoveDOM() geschrieben (andere Browser funktionieren bereits mit anderen Funktionen). Auch die hier abgebildete Funktion funktioniert soweit. Der benötigte Event wird mit "document.onmousemove" abgefragt, also bewegt sich mein Div immer, wenn sich die Maus bewegt.
cwm = document.getElementById('id-Name des divs');
...
else if (document.getElementById) // Mozilla, Netscape 6
{
function MoveDOM(e)
{
if (!cwm) return;
cwm.style.left = e.pageX + self.scrollX + 10;
cwm.style.top = e.pageY + self.scrollY + 10;
}
document.onmousemove=MoveDOM;
}
...
Jetzt die Frage: Kann ich die Ausführung des Events statt auf das ganze Dokument auf ein bestimmtes Element z. B. einen Link beschränken.
Kann ich die Zeile
document.onmousemove=MoveDOM;
durch
document.getElementById('id-Name des links').onmousemove=MoveDOM;
oder ähnliches ersetzten? Das Beispiel funktioniert leider nicht (Fehler: document.getElementById('Name') has no properties).
Da ich mich nur an der seichten Oberfläche der Javascript-Programmierung aufhalte (bin kein Tiefschwimmer), bin ich für eure Hilfe sehr dankbar.
Max
hallo max,
versuchs doch mal mit folgendem lösungsansatz:
<script language="JavaScript">
<!--
...
var aktiv = 0;
function MoveDOM(e)
{
...
if(aktiv == 1){
cwm.style.left = e.pageX + self.scrollX + 10;
cwm.style.top = e.pageY + self.scrollY + 10;
}
}
document.onmousemove=MoveDOM;
//-->
</script>
<a href="#" onmouseover="aktiv=1" onmouseout="aktiv=0">Der Link</a>
...
gruß
hartmann
Habe ich schon ausprobiert. Funktioniert leider nicht. Es scheint so, also ob Änderungen der Variable "aktiv" nicht berücksichtigt werden, solange das onmousemove-Event ausgeführt wird.
function MoveDOM(e)
{
if(aktiv==1)
{
if (!cwm) return;
cwm.style.left = e.pageX + self.scrollX + 10;
cwm.style.top = e.pageY + self.scrollY + 10;
// if(xxx)...
}
}
document.onmousemove=MoveDOM;
Komme ich da vielleicht mit einer while-Schleife weiter? Wie kann eine while-Schleife prüfen, ob sich eine Variable durch eine Event geändert hat?
Oder kann ich anstelle von // if(xxx) einen Check einbauen, der prüft, ob sich die Variable "aktiv" geändert hat?
Max