For det første har du både en form og en funktion med samme navn, hvilket kan give problemer. For det andet kan du ikke overføre objekter med setTimeout ligesom du fx kan overføre strenge. Det nemmeste vil være at lægge en reference til objektet i en global variabel.
Du kan ikke opverføre parametre i et argument til setTimeout ;-|
-- så prøv (lidt besværligere, men hva'-):
<html> <head></head> <body> <SCRIPT LANGUAGE='JavaScript'> <!-- Begin var c; function clock() { var cup = document.getElementById(c); setTimeout("clock()", 1000); } // End --> </script>
sagen er desværre den at meningen er at der skal køre flere ure og denne metode vil desværre ikke kunne bruges. jeg lukker senere idag hvis der ikke er kommet nogle indlæg som jeg kan bruge.
kan du vise et helt sammenhængende eksempel hvor jeg kan se at det virker for jeg tror ikke helt på at det kan lykkes på den måde. vil gerne se at clock() skiftevis arbejder med "cup_1" og "cup_2", evt ved alert(c);.
var nu = new Date(); var snart = new Date(2003,4,30); var snartmsek = snart.getTime(); var ids = new Object(); var taendt;
function startTael() { ids[0]=setInterval(tael1,500); ids[1]=setInterval(tael2,1000); ids[2]=setInterval(tael3,5000); taendt=true; }
function tael1(){ document.tform.t1.value=parseInt(document.tform.t1.value)+1 }
function tael2(){ nu = new Date(); msek = snartmsek - nu.getTime(); var sek = Math.floor(msek/1000); var min = Math.floor(sek/60); var tim = Math.floor(min/60); var dg = Math.floor(tim/24); sek = sek%60; min = min%60; tim = tim%24; document.tform.t2.value = "" + dg + " dg. " + tim + " t. " + min + " min. " + sek + " sek."; //setTimeout(startTael(), 1000); }
function tael3(){ document.tform.t3.value=parseInt(document.tform.t3.value)+1 }
function toggleStart(){ if (taendt){ clearInterval(ids[1]); }else{ ids[1]=setInterval(tael2,1000); } taendt=!taendt; }
</script> </head>
<body onload='startTael()'> <form name="tform"> <!-- : <input type=text name="t0"><br> --> Tæl hvert ½ sekund: <input type=text name="t1" value=0><br> Tæl hvert sekund: <input type=text name="t2"> <input type=button onclick="toggleStart()" value="tænd/sluk"><br> Tæl hvert 5. sekund: <input type=text name="t3" value=0> </form></body> </html>
-- men er det fuldt implementeret i hvilke browsere ?-)
Synes godt om
Slettet bruger
27. maj 2003 - 22:14#20
Det, setTimeout funktionen gør, er at afvikle den streng, som man har givet den med en eval-lignende funktion. Derfor kan du tilføje så mange strenge e.l. du vil, så længe det er gjort korrekt. Se fx dette, der er testet i IE6, NS7 og Opera7:
-- Danny nævner netop at det kun virker i Netscape ...
-- ved du forøvrigt hvor man finder en reference til hvilke objekter man Skal have i sin implementering af ECMA-script ?-)
-- efter lidt roden rundt på ecma-international.org (endnu et sted det var svært at finde rundt på !-| opgav jeg at finde andet end referencer til core ECMA-262 + udvidelserne i de senere udgaver -- men intet om browser-objekter, egenskaber og metoder ...
Synes godt om
Slettet bruger
28. maj 2003 - 12:23#24
Jeg har også haft store problemer med at finde nyttige referencer til ECMA-script. Det er simpelthen en jungle, og derfor har jeg delvist opgivet. Den bedste metode er fx at læse ugentlige JavaScript-klummer e.l., hvor eksperter giver deres syn på sagen.
I tilfældet med setTimeout er mit eksempel dog helt "lovligt" og meget brugt.
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.