Autor | Zpráva | ||
---|---|---|---|
Anonymouz Profil * |
#1 · Zasláno: 13. 9. 2018, 14:57:50
Mám formulář, kde jsou mimo jiné dva číselné inputy. Potřebuji nastavit, aby součet těchto inputů nemohl přesáhnout 10. Zkusil jsem si to napsat na testovací stránce a funguje to pouze tehdy, když value nastavím napevno. To znamená, když si čísla napíšu, nebo upravím pomocí posuvníku, tak to nic nedělá. Může mi s tím něco pomoct? Níže zasílám ukázku kódu.
Živá ukázka |
||
Kajman Profil |
#2 · Zasláno: 13. 9. 2018, 15:01:25
Výpočet dejte dovnitř funkce pocet.
|
||
Keeehi Profil |
Anonymouz:
Tak základem je, že ten výpočet musíš mít uvnitř té funkce. Jinak se provede na začátku (ještě před tím než stiskneš tlačítko) a pak už se jen vypisuje. Ty to chceš ale vypočítat z hodnot co jsou v inputech až po stisknutí tlačítka, takže i zjištění jejich hodnot musí být až uvnitř funkce. Živá ukázka |
||
Anonymouz Profil * |
Uhmm.. Děkuji. Hledal jsem všemožná řešení přes 'addEventListener' atd a tohohle jsem si nevšiml. Dumám nad tím dvě hodiny :D
Já to tam na tlačítko dodělával až dodatečně. Ono to bude původně bez tlačítka a hlídat počet automaticky, takže jak se na to tak dívám, tak to přes addEventListener budu muset asi stejně udělat. |
||
Keeehi Profil |
#5 · Zasláno: 13. 9. 2018, 15:47:49
Anonymouz:
„takže jak se na to tak dívám, tak to přes addEventListener budu muset asi stejně udělat.“ addEventListener není nutnost. Úplně stejně se to dá udělat pomocí element.onchange = function () { ... nebo <input ... onchange="funkce()" ...
Ovšem já sám preferuji addEventListener, jelikož mi přijde elegantnější a má i své výhody, i když v tomto případě nepodstatné. Živá ukázka |
||
Časová prodleva: 4 dny
|
|||
Anonymouz Profil * |
#6 · Zasláno: 17. 9. 2018, 14:18:46
Zaujal mě ten první a poslední řádek. Zkoušel jsem googlovat, ale moc jsem to nepobral. Co přesně znamená
(function () { obsah })(); .onload ? Spustí script uvnitř pouze jednou, nebo i tam může dojít k zacyklení?
|
||
Keeehi Profil |
#7 · Zasláno: 17. 9. 2018, 14:40:24
Anonymouz:
„To je ekvivalent k .onload ?“
Není. Toto se spustí ihned, prakticky jak kdyby to tam nebylo. To proč je ten kód je takto uzavřený do anonymní funkce je kvůli tomu abych nezapleveloval globální scope mnou definovanými proměnnými. Nemohu vědět, jestli náhodou někde ve svém projektu taky nepoužíváš proměnnou result. Pokud ano tak bychom si ji přepisovali a nejspíše by něco přestalo fungovat. Když se to takto obalí, proměnná result je definovaná jen uvnitř té anonymní funkce a nemá vliv na kód vně té funkce. „Spustí script uvnitř pouze jednou, nebo i tam může dojít k zacyklení?“ Spustí se jen jednou. |
||
Časová prodleva: 6 let
|
0