Avatar billede emileej Nybegynder
11. maj 2001 - 20:58 Der er 12 kommentarer og
1 løsning

Was?

Hvad er der galt i følgende funktion? (intet sker):

var lukTimer;
var testTimer;

function minFunktion(){
    clearTimeout(testTimer);
    var i=math.round(math.random()*3)+1;
    if(i==2){
        document.all.billede.src=\'billede1.gif\';
        lukTimer=setTimeout(\"document.all.billede.src=\'billede2.gif\'; clearTimeout(lukTimer);\",100);
    }
    testTimer=setTimeout(\"minFunktion();\",500);
}

E-)mil
http://eej.dk
http://fotx.net/emileej
Avatar billede bbs Nybegynder
11. maj 2001 - 21:11 #1
Hvad er det lige nøjagtigt det JavaScript skal kunne?
Jeg kan sikkert finde noget der kan ;)
Avatar billede jakoba Nybegynder
11. maj 2001 - 21:12 #2
din  clearTimeout(lukTimer);  er ganske oveflødig da den alligevel først bliver eksekveret når timeren er løbet ud.

Det er det andet kald til clearTimeout (med testTimer)  forresten også.

du skal nok lave \"blink on\" tiden lidt længere end 100 millisekunder for at kunne se der er et alternativt billede. 1/10\'endedel sekundt er ikke nok til at se det andet en som et uroligt blink.

mvh JakobA
Avatar billede jakoba Nybegynder
11. maj 2001 - 21:18 #3
Du har vel billede1.gif preloadet?  fx med:

var p1 = new Image();
p1.src=\"billede1.gif\";

ellers skal funktionen køre en masse gange før billedet er loadet.

mvh www.fotz.net/JakobA
Avatar billede emileej Nybegynder
12. maj 2001 - 09:19 #4
Jeg har på fornemmeren at der er en fejl i funktionen - har nu ændret den til:

function minFunktion(){
    var i=math.round(math.random()*3)+1;
alert(i);
    if(i==2){
        document.all.mitBillede.src=billede1.gif\';
        lukTimer=setTimeout(\"document.all.mitBillede.src=\'billede2.gif\';\",1000);
    }
    testTimer=setTimeout(\"minFunktion();\",2000);
}

Alerten bliver ikke eksekveret og det gør koden efter kaldet til denne funktion heller ikke...


E-)mil
http://eej.dk
http://fotx.net/emileej
Avatar billede jakoba Nybegynder
12. maj 2001 - 10:13 #5
Der skal være et enkelt aktiverende kald til funktionen. fx i din onload event i body:

<script language=\'javascript\'>

var pb1 = new Image();
pb1.src = \"billede1.gif\";  // pleload billede1

var lukTimer;
var testTimer;            // timerhandles

function minFunktion(){
    var i=math.round(math.random()*3)+1;
alert(i);
    if(i==2){
        document.all.mitBillede.src=billede1.gif\';
        lukTimer=setTimeout(\"document.all.mitBillede.src=\'billede2.gif\';\",1000);
    };
    testTimer=setTimeout(\"minFunktion();\",2000); //gentag om 2 sekunder
};

</script>

<body  ...  onload=\"Hvad_du_ellers_har; minFunktion()\">

mvh JakobA

Avatar billede emileej Nybegynder
12. maj 2001 - 11:01 #6
Jeg har en onload funktion, der eksekverer flere funktioner end \"minFunktion();\". Jeg tror at der ikke sker noget fordi der er en fejl - funktionerne der skal afvikles efter minFunktion(); bliver nemlig aldrig afviklet...
Avatar billede jakoba Nybegynder
12. maj 2001 - 11:27 #7
Lad os kikke på din fil
Avatar billede emileej Nybegynder
12. maj 2001 - 11:34 #8
[minFunktion()]
...

function loadFunktion(){
alert(\"Før minFunktion\");
    minFunktion();
alert(\"Efter minFunktion\");
}

<body onload=\"loadFunktion();\"...

Alert nummer to bliver ikke vist - det gør den første til gengæld...
Avatar billede jakoba Nybegynder
12. maj 2001 - 11:44 #9
kikkede nærmere og fandt 2 fejl:

function minFunktion(){
    var i=Math.round(math.random()*3)+1;    // Math skal have stort M
alert(i);
    if(i==2){
        document.all.mitBillede.src=\'billede1.gif\';  // \' foran billede1
        lukTimer=setTimeout(\"document.all.mitBillede.src=\'billede2.gif\';\",1000);
    };
    testTimer=setTimeout(\"minFunktion();\",2000); //gentag om 2 sekunder
};

mvh JakobA
Avatar billede jakoba Nybegynder
12. maj 2001 - 11:50 #10
i IE, menu \"vis\", punkt \"internet indstillinger\"

fjern flueben i checkbox foran \"deaktiver scriptdebugging\"

(ovenstående er for IE4, mon ikke der er noget lignende for IE5 og IE5.5).
Avatar billede jakoba Nybegynder
12. maj 2001 - 11:53 #11
Ups. igen:
    var i=Math.round(Math.random()*3)+1;    // ALLE Math skal have stort M
Avatar billede emileej Nybegynder
12. maj 2001 - 12:08 #12
Tak skal du have - det virker fint nu :)
Resultatet er at robotten Robert på http://eej.dk blinker! =)

E-)mil
http://eej.dk
http://fotx.net/emileej
Avatar billede jakoba Nybegynder
12. maj 2001 - 12:11 #13
nuttet :-))
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