[JavaScript] setTimeout/clearTimeout

Pagina: 1
Acties:

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
Ik heb een website waarin popups gebruikt worden als je over een imagemap gaat. Nu moeten die popups als je over een ander deel van de map gaat veranderen en als je langer dan 5 sec. niets doen de popup weer hiden.

Nu werkt dat hiden wel en als ik naar een andere area ga komt die andere ook omhoog alleen is het probleem dat mijn Interval door blijft lopen omdat ik hem niet kan clearen.

Ik moet dus een Timeout clearen op het moment dat ik over een andere area heen ga maar dan moet ik dus wel het ID weten van de timer want daarna moet de timer meteen weer gezet worden.

Anders loopt de timer door en als ik dus over een andere area heen ga dan hide ie ook na de 5 sec. omdat de timer niet gecleared wordt.

Nu is mijn vraag dus..

Hoe kan ik in 1 functie die ik meerdere malen aanroep voordat ik de timer opnieuw set. eerst degene die daarvoor werdt aangeroepen clearen?

dit werkt niet.
JavaScript:
1
2
clearTimeout(TimerID);
var TimerID =(setTimeout('SetHideTip()',5000));

iRacing Profiel


  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 13-09-2022
Is TimerID wel een globale variabele?
Om hem een globale variabele te maken moet je hem declareren buiten de functie, of binnen de functie zonder 'var'

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
Xanthus schreef op 23 februari 2004 @ 12:38:
Is TimerID wel een globale variabele?
Om hem een globale variabele te maken moet je hem declareren buiten de functie, of binnen de functie zonder 'var'
als ik het in de functie doe zonder var dan krijg ik undefined

iRacing Profiel


Verwijderd

jvaneijk schreef op 23 februari 2004 @ 12:42:
[...]
als ik het in de functie doe zonder var dan krijg ik undefined
Waarschijnlijk omdat ie de eerste keer niet bestaat.
JavaScript:
1
2
3
4
5
6
var TimerID; // Alvast definieren
function bla() {
    ....
    if(TimerID) clearTimeout(TimerID);
    TimerID = setTimeout(....);
}

  • Xanthus
  • Registratie: Februari 2002
  • Laatst online: 13-09-2022
Je kan bijvoorbeeld voor je functie TimerID = -1 aanmaken, dus dat hij al een waarde heeft en geen error geeft, en dan dus 'var' weghalen in je code. Dan zou TimerID globaal moeten zijn, en hij zou geen error moeten geven omdat hij nog niet gedefineerd is. (Volgens mij geeft clearTimeout geen error als de parameter niet bij een timer hoort. Als hij wel een error geeft moet je clearTimeout alleen uitvoeren als je al een timer hebt gezet, dat moet je dan dus bijhouden)

[edit]
Arg, te laat. In ieder geval: samengevat, luister naar Blues ;)

[ Voor 9% gewijzigd door Xanthus op 23-02-2004 13:09 ]