Autor | Zpráva | ||
---|---|---|---|
doveda Profil |
ahoj, už se s tím mořím celé odpoledne a nic .... poraďte prosím
Chci, aby se mi postupně vypisovalo zvětšované číslo se zpožděním 2 sec. Asi by to šlo i jinak než cyklem for, ale já to v něm nutně potřebuju. Co mám na tom mým zápisu zvoranýho že to nefunguje???????????? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <head> <script> <!-- var k=1; function ahoj() { document.all.nazev.innerHTML=k; } function cyklus() { for(k;k<51;k++) setTimeout("ahoj()",2000); } // --> </SCRIPT> </head> <body > <input type="button" value="SPUSTIT" onClick="cyklus();" > <p id="nazev" >0</p> </body> </html> |
||
Chamurappi Profil |
#2 · Zasláno: 21. 2. 2012, 21:52:28
Reaguji na dovedu:
Na řádku 12 používáš proměnnou k1 , která neexistuje. Proto ten kód vůbec nefunguje. Kdyby fungoval, tak po sekundě nastaví do onoho elementu číslo 50, protože všechny timeouty načasováváš na sekundu.
Jinak je na tvém kódu víc věcí, které by se měly upravit. |
||
Darkry Profil |
#3 · Zasláno: 21. 2. 2012, 21:54:26
var k = 0; function zvys() { k++; alert(k); } setTimeout("zvys()",2000); |
||
doveda Profil |
#4 · Zasláno: 21. 2. 2012, 21:57:51
Darkry:
jj. to k1 jsem přehlíd, už je to opravený ten zbytek jak posíláš jdu hned vyzkoušet ..... díkes |
||
Witiko Profil |
Darkry:
„setTimeout("zvys()",2000);“ Ono to tedy fungovat bude, ale nejedná se o nejčistší programátorskou techniku. Spíše než na řetězec s kódem, který si bude prohlížeč muset zkompilovat, bych odkazoval bych přímo na funkci - setTimeout(zvys, 2000); . Reálně to také poběží mnohem rychleji, více informací zde.
Další možnosti řešení: Cyklus s lexikální uzávěrou: var i = 0; while(i !== 51) (function(i) { setTimeout(function() { alert(i); }, i * 2000); })(i++); Sebevražedný setInterval: var i = 0, interval = setInterval(function() { alert(i); if(++i === 51) clearInterval(interval); }, 2000); |
||
doveda Profil |
#6 · Zasláno: 23. 2. 2012, 22:00:22
Witiko:
díkes |
||
Časová prodleva: 12 let
|
0