Autor | Zpráva | ||
---|---|---|---|
Kráťa Profil |
#1 · Zasláno: 13. 2. 2007, 01:21:36
Ahoj,
potřeboval bych poradit s javascriptem. mají se tam počítat položky inzerce ve formuláři a i když si myslím, že je to dobře, tak není... K vidění na http://krata.bubakov.net/www/gelton/formular-sl_listy.html jde o to, aby se zobrazil základní formát (to asi je těch 300), po výběru se přepsalo pole B a po dalších výběrech to celkem. mám tam výpočet inputB.value = a; inputD.value = b/100 * c; inputF.value = b * e; inputG.value = (b + f) - d; ale počítá se to úplně blbě. :-( |
||
roberta Profil |
#2 · Zasláno: 13. 2. 2007, 09:42:52
preto ti to počíta blbo, lebo polozky formulára sú v textovom formáte a ty chceš, aby to namiesto textov boli čísla. to znamená, že musíš urobiť konzerziu z textového formátu do číselného
nato sa používajú funkcie: parseInt - text na integer (prirodzené číslo) parseFloat - text na float (reálne číslo) čiže napr. namiesto inputG.value = (b + f) - d; napíš inputG.value = (parseFloat(b) + parseFloat(f)) - parseFloat(d); |
||
peta Profil |
#3 · Zasláno: 13. 2. 2007, 09:56:25 · Upravil/a: peta
Kráťa
"ale počítá se to úplně blbě" co to znamena? neni to treba problem typu: inputG.value = (b + f) - d; inputG.value = (b*1 + f*1) - d*1; dal jsem odeslat, pak zpet a chybna stranka jinak na strance nemuzu prepsat klavesnici zadnou polozku, takze s tim moc delat nemuzu, jako testovat A jo, to se ani nema. Takze... A = 1200 inputB.value = a; ... OK B = 1200 inputD.value = b/100 * c; u C nemas zadnou polozku selected C = 5 (2 inzeraty) D = 1200/100 * 5 = 60 ... OK inputF.value = b * e; u E nemas tez nic selected E = 0.5 (v textu) F = 1200 * 0.5 = 600 ... OK inputG.value = (b + f) - d; G = (1200 + 600) - 60 = 1800-60 = 1740 ... SPATNE tady ti to pocita neco divne Zkusil bych polozky znasobit 1, aby jsi neodcital retezce, konkretne bych si tipnul na polozku B, ze je typu string inputG.value = (b*1 + f) - d; inputG.value = (b*1 + f*1) - d*1; roberta tak ses rychlejsi :) |
||
Joker Profil |
#4 · Zasláno: 13. 2. 2007, 10:04:53
Výsledky výpočtů nastavujete jako hodnoty do inputů, ale neaktualizujete si hodnoty v proměnných.
Takže např. na řádku: inputG.value = (b + f) - d; pořád pracujete s hodnotami b, d a f, které byly ještě před začátkem výpočtu. Kdyžtak takhle: b = a; d = b/100 * c; f = b * e; g = (b + f) - d; inputB.value = b; inputC.value = c; inputD.value = d; inputF.value = f; inputG.value = G; |
||
Kráťa Profil |
#5 · Zasláno: 13. 2. 2007, 16:23:15
Joker
jupííííííííííííííííííííííííííííííí už se mi to počítá, dokonce i správně. jen by se mi ale líbilo, kdyby po načtení byl předvyplněný ten input B na základní nejmenší sazbu (to je těch 300) a tím i naskočí nuly v D a F a součet v G (čili zase těch 300). Celý ten scriptík teď vypadá takto function change () { var inputA = document.getElementById ("format") var inputB = document.getElementById ("format_result") var inputC = document.getElementById ("slevy") var inputD = document.getElementById ("slevy_result") var inputE = document.getElementById ("umisteni") var inputF = document.getElementById ("umisteni_result") var inputG = document.getElementById ("konecna_bez_dph"); var a = inputA.value - 0; var b = inputB.value - 0; var c = inputC.value - 0; var d = inputD.value - 0; var e = inputE.value - 0; var f = inputF.value - 0; var g = inputG.value - 0; b = a; d = b/100 * c; f = (b - d) * e; g = (b + f) - d; inputB.value = b; inputC.value = c; inputD.value = d; inputF.value = f; inputG.value = g; } |
||
Kráťa Profil |
#6 · Zasláno: 13. 2. 2007, 16:47:56
Hip hip hip hurá, dal jsem do těla dokumentu k inputům value a chodí to tak, jak jsem chtěl. Děkuji všem za pomoc, považuji to za vyřešené, jdu dělat odesílání.
|
||
Joker Profil |
#7 · Zasláno: 13. 2. 2007, 16:53:39
Hip hip hip hurá, dal jsem do těla dokumentu k inputům value a chodí to tak, jak jsem chtěl.
Případně můžete při načítání stránky zavolat přímo metodu change() a jednou ten výpočet provést. Například dát na konec kódu: <script type="text/javascript"> change(); </script> |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0