Autor Zpráva
Anonymouz
Profil *
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
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
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
Anonymouz
Profil *
Zaujal mě ten první a poslední řádek. Zkoušel jsem googlovat, ale moc jsem to nepobral. Co přesně znamená
(function () {
    obsah
})();
To je ekvivalent k .onload? Spustí script uvnitř pouze jednou, nebo i tam může dojít k zacyklení?
Keeehi
Profil
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0