Využij akce až 30 % zdarma při nákupu e-learningu. Více informací. Zároveň je tento týden sleva až 80 % na e-learning týkající se C# .NET
Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
discount week 30 halloween
Avatar
John Ronald Reuel Tolkien:21.3.2018 22:58

Zdravím,
Mám jednoduchý kód :

function pricti()
  {
 penize+=100;
    money.textContent="Peníze : " + penize + " Kč";
  }
  while (penize<10000)
  {
  setInterval(pricti,100);
   }

když se spustí funkce pricti(),
prohlížeč se zasekne...
Co je na kódu tedy špatně ?

 
Odpovědět
21.3.2018 22:58
Avatar
DHPICO
Redaktor
Avatar
Odpovídá na John Ronald Reuel Tolkien
DHPICO:21.3.2018 23:32

setInterval nastaví na spouštění funce každžch 0,1 sekundy, jelikož to je ve While cyklu, tak se to děje neuvěřitelně rychle, řekněmě třeba desettisíkrát než se projeví ono peníze += 100, takže tam máš každých 0,1 sekundy 10000x zvyšování hodnoty a nikdy to neukončíš, k tomu je potřeba zavolat clearInterval() s ID, které ti setInterval vrací, stačilo si přečíst:

https://www.w3schools.com/…interval.asp

Nahoru Odpovědět
21.3.2018 23:32
Požehnáni budíš oráj
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
DHPICO
Redaktor
Avatar
Odpovídá na John Ronald Reuel Tolkien
DHPICO:21.3.2018 23:36

pro tvůj původní účel vymaž while cyklus a nech tam jen jednou setInterval od kterého si uložíš ID do proměnné a v momentě, kdy bude penize === 10000, tak zavolej clearInterval s tím ID, mělo to tedy trval 10 sekund

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
21.3.2018 23:36
Požehnáni budíš oráj
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.