05. april 2006 - 00:50Der er
12 kommentarer og 2 løsninger
Altid globale variabler i setTimeout?
Hejsa,
Jeg sidder her og bliver godt irriteret på setTimeout-funktionen. Så vidt jeg kan forstå så er alle variabler kaldt i en setTimeout globale variabler - også selv de bliver kørt fra hver sin funktion. Dette eksempel belyser hvad jeg er frustreret over:
function boing() { hephey = 'abc'; setTimeout("alert(hephey)", 500); } function boing2() { hephey = 'def'; } boing(); boing2();
Der vil komme et alert-vindue med teksten 'def'. hephey er ikke erklæret global og boing2()'s hephey-variabel bør derfor ikke påvirker den hephey der bliver kaldt og defineret i boing(). Det er hvert fald den tankegang jeg er vant til fra PHP.
Det synes jeg er yderst upraktisk? Skal jeg forstå det sådan at man bare ikke MÅ bruge (i dette tilfælde) hephey-variablen til andre ting mens setTimeout'en venter?
Jeg vil have lov til at definere en variabel et andet sted i koden uden at den påvirkes i min "ventende" setTimeout.
Eksempel: problemet opstår fx i min fader-funktion. Hvis flere elementer skal fades ud/ind på samme tid går der helt kage i det fordi variablen "opacity" påvirkes fra højre og venstre.
Jeg vil meget gerne høre nogle løsninger/alternativer.
Jeg kan godt forstå irritationen... her er et eksempel hvor hephey er midlertidig... - prøv at slette // foran første alert ... ok da funktionen endnu ikke er slut eksisterer hephey stadig. ... prøv den næste med timeout... da funktionen er ovre eksisterer hephey ikke længere og du får en fejl... om der er en anden løsning på dit problem tør jeg ikke sige...
<script type="text/javascript"> <!--
function boing(hephey) { hephey='abc'; // alert(hephey); // setTimeout("alert(hephey)", 500); }
Nåh, ja ok så får du den til at poste indholdet som tekst ind i alerten med det samme istedet for først om et ½ sekund... genialt nok - det tænkte jeg ikke over :P
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.