Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Jak spočítat v javascriptu

Jsem tu zas. Navazuji na svůj původní thread, jelikož se jedná o tentýž formulář, ale zcela jinou věc. nevím, jak to matematicky spočítat, stále mi chybí jedna dodnota. buďmnožství inzerátů, nebo množstevní sleva.
Napadlo mě dát do selectu u slev součin počet inzerátů x sleva v %, ale neumím z toho dostat zpět počet inzerátů, kterým je třeba vynásobit to celkem (input G)
Zatím tam mám
b = a;
d = b/100 * c;
f = (b - d) * e;
g = (b + f) - d;

a ukazuje to result za jeden inzerát a slevy za všechny. Potřeboval bych, aby to ukazovalo slevy za všechny (u tří inzerátů za 600 90 Kč a result v G 1 710 Kč atd.)
K vidění na http://krata.bubakov.net/www/gelton/formular-sl_lis ty.html
Jsem ty inputy označil červenými písmeny pro přehlednost.

Předmět Autor Datum
V noci mi s tím děsně pomohl los, respektive celé to udělal (díky 426x), do tohoto stádia function…
Kráťa 16.02.2007 16:08
Kráťa
Nechápu tě, ale to je při přepracování u mě běžné.... // Edit No jestli to dobře chápu tak ty chce…
Flash_Gordon 16.02.2007 17:29
Flash_Gordon
Já se často neumím pořádně vyžvejknout. Co obrázek? [http://img76.imageshack.us/img76/825/javascrip…
Kráťa 16.02.2007 17:57
Kráťa
Výpočet zľavy som si trochu zjednodušil, aby som nemusel písať veľa riadkov a pri tom som si nevšimo…
los 16.02.2007 18:56
los
No to je super. Ono mi to celé chodí. Ještě jsem mu to předělal, jak ses ptal, že chtěl příplatek z… poslední
Kráťa 17.02.2007 03:06
Kráťa

V noci mi s tím děsně pomohl los, respektive celé to udělal (díky 426x), do tohoto stádia

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 za_kus = inputA.value - 0;
	var inzeratov = inputC.value - 0;
	var priplatok = inputE.value - 0;
	var cena = inzeratov * za_kus;
	var zlavy = [2, 3, 6, 12];
	var zlava = 0;
	
	while (zlavy.shift() <= inzeratov)
		zlava += 5;

	inputB.value = za_kus; 
	inputD.value = Math.round(cena * zlava/100);
	inputF.value = Math.round(cena * priplatok/100); 
	inputG.value = Math.round(cena * (1 - zlava/100 + priplatok/100));  
}

Má to však jeden háček všechno funguje, jenže u těch slev to při volbě 12ti neposkočí o 5 % u slevy (v zadání), ale o 15, na 30 %.
Napadlo mne, nějak to zozvětvit a větev na těch 30 % udělat samostatně, jenže to neumím zapsat. Mám na mysli něco takového

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 za_kus = inputA.value - 0;
	var inzeratu = inputC.value - 0;
	var priplatek = inputE.value - 0;
	var cena = inzeratu * za_kus;
	var slevy = [2, 3, 6, 12];
	var sleva = 0;
	
	if (slevy == "12"){
	while (slevy.shift() <= inzeratu)
		sleva += 30;

	inputB.value = za_kus; 
	inputD.value = Math.round(cena * sleva/100);
	inputF.value = Math.round(cena * priplatek/100); 
	inputG.value = Math.round(cena * (1 - sleva/100 + priplatek/100));  
  }
  
  else {

	
	while (slevy.shift() <= inzeratu)
		sleva += 5;

	inputB.value = za_kus; 
	inputD.value = Math.round(cena * sleva/100);
	inputF.value = Math.round(cena * priplatek/100); 
	inputG.value = Math.round(cena * (1 - sleva/100 + priplatek/100));  
  }
}

Jenže to samozřejmě neumím zapsat. :-/

Nechápu tě, ale to je při přepracování u mě běžné....

// Edit

No jestli to dobře chápu tak ty chceš změnit "slevu" pokud počet inzerátů dosáhne nějakého počtu.
To je potom jednoduchá - více matematická než programátorská otázka.... :-)
Nejprve zkontroluješ v podmínce kolik jich je objednáno no a pak podle toho nastavíš slevu a pokracuješ....

Výpočet zľavy som si trochu zjednodušil, aby som nemusel písať veľa riadkov a pri tom som si nevšimol, že pri 12 inzerátoch to poskočí až o 15%.

Najjednoduchšie je pridať do toho poľa ďalšie čísla 12 (jeden výskyt zodpovedá 5% zľave):

var zlavy = [2, 3, 6, 12, 12, 12];

Prípadne prehľadnejšie by bolo napísať si ďalšiu funkciu, ktorá podľa počtu inzerátov vypočíta zľavu.

No to je super. Ono mi to celé chodí. Ještě jsem mu to předělal, jak ses ptal, že chtěl příplatek z toho po slevě.
Původně jsem si myslel, že to bude formulářík "levou zadní", pak si tam vymyslel počítání, což jsem si v první chvíli představoval, že to bude jen nějaké a + b - c... U těch slev jsem si pak myslel, že to bude jen nějaké krát počet. Ale že z toho nakonec bude lapálie na téměř dva týdny, to jsem netušil.
Děkuji převelice, sám bych to nevyřešil ani náhodou a to se mi o tom i zdálo. :-)

Zpět do poradny Odpovědět na původní otázku Nahoru