JavaScript-GetElementByID + timeout

  1. moses_78

    moses_78 Thread StarterMacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    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
     
    moses_78, 10.07.2005
  2. Jakob

    JakobMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Hallo,

    bin nicht kompetent in JS, aber ich glaube die Funktion wait + das was dann kommen soll - ist das richtige in dem Fall.
     
    Jakob, 10.07.2005
  3. dms

    dms

    Code:
    win.setTimeout('document.getElementById("'+id+'").style.borderColor = "black";', 1500);
    So sollte es laufen, Du hast die ID nicht eingesetzt.
     
  4. moses_78

    moses_78 Thread StarterMacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    @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]
     
    moses_78, 10.07.2005
  5. dms

    dms

    Ü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.
     
  6. moses_78

    moses_78 Thread StarterMacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    das mit window.setTimeout stimmt, habe ich auch grad gemerkt.
    aber...

    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
     
    moses_78, 10.07.2005
  7. dms

    dms

    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. ;)
     
  8. moses_78

    moses_78 Thread StarterMacUser Mitglied

    Mitglied seit:
    08.04.2005
    Beiträge:
    1.264
    Zustimmungen:
    22
    DankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDankeDanke!!

    klappt jetzt einwandfrei. Aber gerafft hab ichs immer noch nicht..is auch egal
     
    moses_78, 10.07.2005
Die Seite wird geladen...
Ähnliche Themen - JavaScript GetElementByID timeout
  1. nicoch
    Antworten:
    2
    Aufrufe:
    285
  2. beatles
    Antworten:
    11
    Aufrufe:
    510
    beatles
    24.02.2017
  3. Kopfkissen
    Antworten:
    13
    Aufrufe:
    720
    Olivetti
    25.02.2017
  4. leo-magic
    Antworten:
    0
    Aufrufe:
    342
    leo-magic
    27.05.2016
  5. UDH5
    Antworten:
    0
    Aufrufe:
    485