Autor | Zpráva | ||
---|---|---|---|
zebra11 Profil |
#1 · Zasláno: 14. 12. 2008, 16:40:02
Potřebuju poradit jak udělám takovou jednoduchou kalkulačku jsem v javascriptu nováček tak potřebuju poradit....
Představuju si to takto: "a" a "b" by byly pole do kterých by se dalo zapisovat, např.: do pole "a" bych napsal '1' a do pole "b" bych napsal '2' (to by se hosilo do proměných "a" a "b"); poté by se stisklo tlačítko odeslat, které by sečetlo proměně "a" a "b" a odeslalo to do políčka "c".... Potřebuju vědět jak to udělat, všem předem děkuji za odpovědi... |
||
Měsíček Profil |
#2 · Zasláno: 14. 12. 2008, 16:53:41 · Upravil/a: Měsíček
Reaguji na zebra11:
Třeba takhle (jde to, ale ještě zkrátit a zlepšit): <script type="text/javascript"> function secti () { with (document.form) { c.value = parseInt(a.value)+parseInt(b.value); } } </script> <form name="form"> <input name="a"> + <input name="b"> = <input name="c"> <input type="button" onClick="secti();" value="Odeslat"> </form> |
||
Měsíček Profil |
#3 · Zasláno: 14. 12. 2008, 17:02:41
Reaguji ještě jednou na zebra11:
Kdyby jsi chtěl hodně šetřit místem, jde to i takhle: <form name="form"> <input name="a"> + <input name="b"> = <input name="c"> <button onClick="with (document.form) { c.value = parseInt(a.value)+parseInt(b.value); }"> Odeslat </button> </form> |
||
zebra11 Profil |
#4 · Zasláno: 14. 12. 2008, 17:04:35
Super dík... mohl by mi ještě někdo vysvětlit toto:
c.value = parseInt(a.value)+parseInt(b.value) |
||
Měsíček Profil |
#5 · Zasláno: 14. 12. 2008, 17:08:11
Reaguji na zebra11:
"Super dík... mohl by mi ještě někdo vysvětlit toto: " Do "c.value" (rozloženě do "document.form.c.value") přiřaď součet "a.value" (rozloženě "document.form.a.value") a "b.value" (rozloženě "document.form.b.value). Funkce parseInt() oseká případný vstup písmene na číslo .. tedy kdyby jsi zadal omylem do jednoho pole místo "5" třeba "5d" tak to bude "d" převede na nic a bude zase počítat s "5" takže se vlastně nic nestane, jestliže by tam ta funkce nebyla tak by to fungovalo pouze kdyby jsi zadával čísla, kdyby jsi zadal omylem písmeno, celá aplikace by přestala fungovat. |
||
zebra11 Profil |
#6 · Zasláno: 14. 12. 2008, 17:14:21
OK děkuji Měsíčku moc si mi pomohl...
Moderátoři můžete to LOCKnout.. |
||
Měsíček Profil |
#7 · Zasláno: 14. 12. 2008, 17:16:48
Reaguji na zebra11:
"OK děkuji Měsíčku moc si mi pomohl... " Za málo. "Moderátoři můžete to LOCKnout.." Pod tlačítkem "Poslat zprávu" máš odkaz "Zamknout téma" -> tím to LOCKneš :) |
||
Chamurappi Profil |
#8 · Zasláno: 14. 12. 2008, 17:33:08
Reaguji na zebru11:
Na funkci parseInt si dej pozor, umí pracovat i s různými číselnými soustavami. Zadáš-li „020“, parseInt předpokládá osmičkovou soustavu a vrátí 16. Zadáš-li „0x5d“, parseInt předpokládá šestnáctkovou soustavu a vrátí 93. Číselnou soustavu si lze vynutit druhým argumentem, takže kdyby byla zmíněná inteligence na obtíž, můžeš volat parseInt(řetězec, 10). Zamknout si můžeš sám, pokud si myslíš, že hrozí příliv nežádoucích příspěvků — jinak to nemá žádný smysl a důrazně to nedoporučuji. Kdybych nebyl moderátor, mohl bych teď tenhle svůj rozepsaný text zahodit, protože jsi mi zamknul pod nosem. Což by mě fakt nepotěšilo. Odemykám. Reaguji na Měsíčka: „with (document.form)“ Není sice nic špatného na tom, že si formulář pojmenuje, ale v tomto případě to není nezbytné. Formulářové prvky mají v this.form uloženou referenci na svůj rodičovský formulář. „máš odkaz "Zamknout téma" -> tím to LOCKneš :)“ Děsná psina. |
||
Časová prodleva: 2 měsíce
|
|||
ultrapako Profil |
#9 · Zasláno: 31. 1. 2009, 20:33:02
:-)
|
||
zebra11 Profil |
#10 · Zasláno: 31. 1. 2009, 20:42:24
Číselnou soustavu si lze vynutit druhým argumentem, takže kdyby byla zmíněná inteligence na obtíž, můžeš volat parseInt(řetězec, 10)
Co mám dát na místo "řetězec"? Je to a.value? |
||
Měsíček Profil |
#11 · Zasláno: 31. 1. 2009, 20:48:41
Reaguji na zebra11 (alias ultrapaka):
"Co mám dát na místo "řetězec"? Je to a.value?" Na místo "řetězec" máš dát "řetězec" - čiliže v tomto případě klidně i "a.value". Mohl bych poprosit moderátory jestli by se podívali zdali se shoduje IP adresa uživatele ultrapako a zebra11? |
||
Chamurappi Profil |
#12 · Zasláno: 2. 2. 2009, 11:20:10
Reaguji na zebru11:
Za řetězec si dosaď jakoukoliv proměnnou (klidně a.value) nebo přímo řetězec v uvozovkách. Viz Proměnné v jazyce JavaScript. Reaguji na Měsíčka: „Reaguji na zebra11 (alias ultrapaka)“ IP se neshoduje. Ani úroveň projevu se moc neshoduje, zebra11 je původní tazatel a ultrapako je jen vůl vytahující zbytečně zapadlá vlákna. |
||
Časová prodleva: 2 měsíce
|
|||
suvel Profil |
#13 · Zasláno: 22. 3. 2009, 17:18:49 · Upravil/a: suvel
Oživuji tohle vlákno, protože při řešení problému, kdy potřebuji zkontrolovat, jestli do formuláře bylo zadáno číslo (a ne jakékoli náhodné znaky), jsem tady přišel na podobné řešení.
ALE: parseInt() mi nefunguje, vždy hodí jenom hodnotu NaN, nikdy žádné číslo, ať dělám, co dělám, a to i ve výše zveřejněném kódu od Měsíčka (kalkulačka vyhodí jako výsledek sčítání NaN). Kde je chyba? |
||
vynalezce Profil |
#14 · Zasláno: 22. 3. 2009, 17:22:58 · Upravil/a: vynalezce
suvel
if(isNaN(pole)){alert('musite zadat cislo')} snad je to ok |
||
suvel Profil |
#15 · Zasláno: 22. 3. 2009, 17:27:22
Dík, ale Měsíček napsal:
Funkce parseInt() oseká případný vstup písmene na číslo .. tedy kdyby jsi zadal omylem do jednoho pole místo "5" třeba "5d" tak to bude "d" převede na nic a bude zase počítat s "5" To je přesně to, co potřebuju. Ale ta funkce to nedělá! Anebo jak to zařídit jinak? |
||
vynalezce Profil |
#16 · Zasláno: 22. 3. 2009, 17:29:30
pokud jsi napsal vlastni funkci nebo jsi tu funkci opsal hod sem kod
|
||
vynalezce Profil |
#17 · Zasláno: 22. 3. 2009, 17:34:35
hadam ze NaN to hazi jen kdyz zadas znakyCISLOznaky
|
||
vynalezce Profil |
#18 · Zasláno: 22. 3. 2009, 17:37:16
a co takhle
if(isNaN(parseInt(pole,10))){alert('musite zadat cislo')} |
||
suvel Profil |
#19 · Zasláno: 22. 3. 2009, 17:38:42
No ono to funguje i v té kalkulačce, co je tady nahoř. Když se zadá text, je výsledek NaN. Já bych uvítal, kdyby byl v takovém případě výsledek 0. V jiných jazycích je to legrace, tam existuje převod řetězce na číslo, který tohle dělá, v php je to taky legrace, ale jak na to v JS, to fakt nevím. Prosím, poraďte někdo..
|
||
vynalezce Profil |
#20 · Zasláno: 22. 3. 2009, 17:40:31
if(isNaN(parseInt(pole.value,10))){pole.value=0}
snad to funguje |
||
Chamurappi Profil |
#21 · Zasláno: 22. 3. 2009, 17:44:44
Reaguji na suvela:
„Když se zadá text, je výsledek NaN. Já bych uvítal, kdyby byl v takovém případě výsledek 0.“ var výsledek = parseInt(řetězec, 10) || 0; |
||
suvel Profil |
#22 · Zasláno: 22. 3. 2009, 17:52:47
Dík, je to řešení (JS moc neznám, tak jsem čekal nějakou integrovanou funkci) :-)
|
||
Časová prodleva: 15 let
|
0