Autor | Zpráva | ||
---|---|---|---|
xlifer Profil |
#1 · Zasláno: 20. 10. 2010, 01:29:34
<div id="pole"></div> akce = setInterval("pocitej(1);", 3000); function pocitej(cislo) { document.getElementById("pole").innerHTML = "cislo: " + cislo; cislo = cislo + 1; } Jak zajistit aby se v rámci načasované funkci navyšovala hodnota cislo? Díky. |
||
Tori Profil |
#2 · Zasláno: 20. 10. 2010, 01:51:24
tak, že proměnnou cislo nepoužijete jako parametr, ale deklarujete ji jako globální.
|
||
TomasJ Profil |
#3 · Zasláno: 20. 10. 2010, 13:28:20
Reaguji na xlifer:
a nebo: akce = setTimeout("pocitej(1)",3000); function pocitej(cislo) { document.getElementById("pole").innerHTML = "cislo: " + cislo; cislo++; setTimeout("pocitej("+cislo+")",3000); } To funguje tak že var akce spustí za 3 sekundy funkci pocitej(1) ale jen jednou a pak už se spouští z funkce samotné, s číslem vyšším +1 (cislo++;) a nebo pak jak říká Tori, vytvoříte var akce... ; a pod tím var cislo; Potom můžete nechat tu Vaši funkci se setInterval, ale doporučuji změnit cislo = cislo+1; na cislo++; Má to stejnou funkci ale je to přehlednější a kratší ;-) |
||
_es Profil |
#4 · Zasláno: 20. 10. 2010, 13:47:59
TomasJ:
Ten tvoj kód nie je dobrý. Nielen, že ponecháva nevhodné použitie setInterval, ale ešte aj bezdôvodne vytvára rekurzívne volanie funkcie. <div id="pole"></div> <script> var pole = document.getElementById("pole"), cislo = 1, akce = setInterval(pocitej, 3000); function pocitej(){ pole.innerHTML = "cislo: " + cislo++; } </script> |
||
xlifer Profil |
#5 · Zasláno: 20. 10. 2010, 16:14:28
_es:
OK, díky, tvůj kód je funkční. Upravil jsem takto a šlape dobře! <div id="pole"></div> <script> var pole = document.getElementById("pole"); cislo = 1; akce = setInterval(pocitej, 5000); function pocitej() { if (cislo>5) {cislo = 1;}; document.getElementById("pole").innerHTML = "cislo: " + cislo++; } </script> |
||
_es Profil |
#6 · Zasláno: 20. 10. 2010, 16:36:53
|
||
xlifer Profil |
#7 · Zasláno: 21. 10. 2010, 00:10:06 · Upravil/a: xlifer
_es:
Díky za upozornění, nevědel jsem, že to má až tak velký význam, když to funguje i bez var. Takže takto je vše ok? <div id="pole"></div> <script> var pole = document.getElementById("pole"); var cislo = 1; var akce = setInterval(pocitej, 5000); function pocitej() { if (cislo>5) {var cislo = 1;}; document.getElementById("pole").innerHTML = "cislo: " + cislo++; } </script> |
||
panther Profil |
#8 · Zasláno: 21. 10. 2010, 00:13:58
xlifer:
„Takže takto je vše ok?“ můžu se zeptat, proč definuješ proměnnou „pole“, když s ní pak nikde dál nepracuješ? |
||
Chamurappi Profil |
#9 · Zasláno: 21. 10. 2010, 00:18:00 · Upravil/a: Chamurappi
Reaguji na xlifera:
„Takže takto je vše ok?“ Není. Řekl bych, že uvedený kód nemůže fungovat. Neměl by ses tady teď ptát, jestli je kód v pořádku, ale proč nefunguje. Stejně hloupá situace jako včera, lenochu… |
||
TomasJ Profil |
#10 · Zasláno: 21. 10. 2010, 15:22:03
Reaguji na _es:
„Ten tvoj kód nie je dobrý.“ No zatím v tom tolik zkušeností nemám, takže nevím, co to bude mít v praxi za následky pro uživatele, ale přes to všechno kód funguje správně... Reaguji na Chamurappi: Myslím, že ani neví k čemu tu funkci vlastně potřebuje, jinak by ji vyzkoušel a zjistil, že funguje a nemusel by psát "Takže takto je vše ok?" ... Mimochodem Chamurappi byl zakladatel prvního trestního zákoníku "Oko za oko, zub za zub" je to tak? :) |
||
_es Profil |
#11 · Zasláno: 21. 10. 2010, 16:25:34
xlifer:
„Takže takto je vše ok?“ Ako ti už napísal Chamurappi, nie je. Ak chceš v JS programovať, tak si naštuduj aspoň základy, v tomto prípade pojmy "globálna premenná" a "lokálna premenná". Potom ti bude jasné, čo tam je zle. |
||
Časová prodleva: 14 let
|
0