Avatar billede spectual Nybegynder
04. maj 2001 - 09:24 Der er 7 kommentarer og
1 løsning

Hack?

Er det et \"hack\" at kalde en funktion med en setTimeout istedet for at kalde den direkte?

Til tider virker det kun med en setTimeout selvom den kun er sat til 1.
Avatar billede nikolajdu Nybegynder
04. maj 2001 - 09:32 #1
Jeg vil ikke sige det er et hack, men 1. Det lyder lidt voldsomt. Du vil at kalde funktionen 1000 gange i sekundet?? Det kunne nok give problemer.
Avatar billede olebole Juniormester
04. maj 2001 - 10:30 #2
<ole>
nikolajdu >> Nej den fyrer kun funktionen af én gang efter 1ms...det er ikke \'setInterval\'.
Der sker ikke noget ved at bruge det lille hack...jeg gør det somme tider selv  ;)
/mvh
</bole>
Avatar billede nikolajdu Nybegynder
04. maj 2001 - 10:34 #3
Ole - Igen har du ret. Jeg kom vist til at tænke på et script jeg selv bryggede sammen forleden hvor det kaldte sig selv med 100ms mellemrum. Havde nemlig her først forsøgt at kalde funktionen hurtigere og det var ikke så godt. Men da det anyway ikke var nødvendigt at kalde den så hurtigt, blev det lavet om igen...
Avatar billede nikolajdu Nybegynder
04. maj 2001 - 10:37 #4
setInterval?? Hmm den kendte jeg ikke. Men det lyder som noget jeg kunne have brugt. :-)
Avatar billede olebole Juniormester
04. maj 2001 - 10:46 #5
setInterval(\"alert(\'Jamen dog...nu igen...!?!\')\",3000);

...giver dig en alert, hvert 3. sekund....ganske nyttig funktion (med noget mere begavet end alert\'en - that is!)
/mvh
Avatar billede myplacedk Nybegynder
04. maj 2001 - 10:49 #6
setTimeout er en glimrende ting til andet end bare at lade noget ske efter en bestemt tid er gået. :)
Den er ikke beregnet til det, så man kan vel godt kalde det et \"hack\".

Jeg bruger den selv ofte til at starte en ny \"tråd\" / at køre noget i \"baggrunden\".

Fx. synes jeg nogle gange det kan være træls at en alert standser scriptet til man trykker OK.
Så kalder jeg bare alert via setTimeout, med en forsinkelse på 1. Virker ganske glimrende. :)
Avatar billede spectual Nybegynder
04. maj 2001 - 11:23 #7
Hvis man laver et menusystem, er det vist uundgåligt at lave det lille trick jeg snakker om. Forestil dig f.eks. at du har et layer, der har et layer oven på sig. Du har en funktion, som skjuler begge layerspå en mouseout. Når der sker mouseover på det 2. layer, sker der en mouseout på det 1.

Så har du selvfølgelig lavet, så den kun skjuler de layers hvis der ikke er sket en mouseover på det 2. layer.

Sjovt nok - i dette tilfælde, vil mouseover\'en ske *efter* mouseout\'en med det resultat, at det ikke virker efter hensigten (den skjuler jo på mouseout, fordi den ikke har fået en mouseover).

Laver du derimod et settimeout i mouseout funktionen og først efter timeout\'en på 1 ms. tjekker om der er sket mouseover, virker det fint.

Hvorfor har jeg aldrig fundet ud af.
Avatar billede spectual Nybegynder
04. maj 2001 - 11:32 #8
Her er eksempel på hvad jeg snakker om:

<html><body>
<script language=\"JavaScript\">
var mo = false;
var mo2 = false;

function tjek_igen() {
if ((mo==false) && (mo2==false)) { document.all [\"span2\"].style.visibility = \'hidden\'; }
}

function vis() {
document.all [\"span2\"].style.visibility = \'visible\';
}

function tjek () {
setTimeout (\"tjek_igen();\",1);              /* virker hvis du bruger denne linje */
/*tjek_igen();*/                          /* virker ikke hvis du bruger denne linje */
}

</script>

<span id=\"span1\" onMouseOver=\"java script:mo=true;vis();\" onMouseOut=\"java script:mo=false;tjek();\" style=\"width=200; height=20; background-Color: #00ff00\"></span><br>
<span id=\"span2\" onMouseOver=\"java script:mo2=true;\" onMouseOut=\"java script:mo2=false;tjek();\" style=\"visibility: hidden; width=200; height=200; background-Color: #ff0000\"></span>
</BODY>
</HTML>
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester