JavaScript-GetElementByID + timeout

moses_78

Aktives Mitglied
Thread Starter
Dabei seit
08.04.2005
Beiträge
1.288
Reaktionspunkte
22
Hallo,

ich versuche, mit GetElementByID() in der Navigationsleiste einer Webseite
den Hover-Effekt ca. 2 Sekunden, nach dem der Cursor den Link verlassen hat, anhalten zu lassen. Mein Quelltext sieht bis jetzt so aus:

Code:
function hover(id)
{
document.getElementById(id).style.borderColor = "lime";
}

function enthover(id)
{
window.setTimeout('document.getElementById(id).style.borderColor = "black";', 1500);
}

und bei dem Link werden die functions dann folgendermaßen aufgerufen:
Code:
<a href="home.html" onmouseover="hover(1)" onmouseout="enthover(1)" id="1">home</a>

Das Problem ist, dass der Hover-Effekt so lange anhält, bis man die Seite neu läd. Auch wenn ich bei Timeout nur 1 milisekunde eingebe.

Hatte jemand von Euch ein ähnliches Problem oder kennt eine Webseite,
bei der ich das Abkupfern könnte?

Danke im Vorraus
moses
 
Zuletzt bearbeitet:
Hallo,

bin nicht kompetent in JS, aber ich glaube die Funktion wait + das was dann kommen soll - ist das richtige in dem Fall.
 
Code:
win.setTimeout('document.getElementById("'+id+'").style.borderColor = "black";', 1500);
So sollte es laufen, Du hast die ID nicht eingesetzt.
 
Zuletzt bearbeitet von einem Moderator:
@dmx: Doch, die id wird über die Variable von der function übergeben
(onmuseover="hover(id1)").

@jakob: muss dass mal ausprobieren, danke

[edit:]mit wait(1500); funzts auch nicht...dreck....oder meintest du das anders?[/edit]
 
Zuletzt bearbeitet:
Übergeben ja, aber eben nicht eingesetzt. Schau Dir nochmal meinen Post oben an.
Ach und was mir noch auffällt: window und nicht win. Es sei denn, Du hast win vorher definiert.
 
Zuletzt bearbeitet von einem Moderator:
das mit window.setTimeout stimmt, habe ich auch grad gemerkt.
aber...

dms schrieb:
Übergeben ja, aber eben nicht eingesetzt. Schau Dir nochmal meinen Post oben an.

Bin ich jetzt zu blöd oder schreiben wir komplett aneinander vorbei?
Im Link heissts
Code:
<a href="#" onmouseover="hover(xxx)"  id="xxx"></a>

und dann in der function

Code:
hover(id)
{
document.getElementById(id).style.borderColor = "lime";
}
^
das is der parameter

müsste richtig sein
 
Ja, in der Funktion hover stimmts ja auch. Aber in enthover musst Du den Wert von id einbinden, und nicht id selbst.

Als erläuterung schreibe mal folgendes in die Funktion enthover:
Code:
window.setTimeout('alert("'+id+'");', 1500);
window.setTimeout('alert(id);', 1500);
Der zweite Timeout, der Deinem Aufruf entspricht, wird einen Referenz-Fehler erzeugen, da id zu dem Zeitpunkt an dem der Timeout aufgerufen wird nicht belegt ist. Wäre id eine global belegte Variable würde es auch so funktionieren.

edit:
Also nochmal die komplette Funktion enthover, inklusive korrektem window-Objekt.
Code:
function enthover(id) {
   window.setTimeout('document.getElementById("'+id+'").style.borderColor = "black";', 1500);
}
Leerzeichen entfernen nicht vergessen. Kann das nicht mal jemand fixen?
Wenn Du's nicht glaubst, probiers einfach aus. ;)
 
Zuletzt bearbeitet von einem Moderator:
DankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDanke!!

klappt jetzt einwandfrei. Aber gerafft hab ichs immer noch nicht..is auch egal
 
Zurück
Oben Unten