Autor Zpráva
Rado
Profil *
Ahoj,

zdroják:

<script type="text/javascript">
<!--
var korekce = 0;
var modul = 190;
var cena = 1586;
// -->
</script>

....
....

<form action="">
<div><input type="radio" name="1" onclick="modul = 170" style="border-style: none;" />&nbsp;MIN - výška 160-179 mm</div>
<div><input type="radio" checked="checked" name="1" onclick="modul = 190" style="border-style: none;" />&nbsp;MID - výška 180-199 mm</div>
<div><input type="radio" name="1" onclick="modul = 210" style="border-style: none;" />&nbsp;MAX - výška 200-220 mm</div>
</form>

...
...

<form action="">
<div><input type="radio" checked="checked" name="1" onclick="cena = 1586" style="border-style: none;" />&nbsp;Rozteč v rozsahu 180-200 mm</div>
<div><input type="radio" name="1" onclick="cena = 1708" style="border-style: none;" />&nbsp;Rozteč v rozsahu 220-250 mm</div>
<div><input type="radio" name="1" onclick="cena = 1830" style="border-style: none;" />&nbsp;Rozteč v rozsahu 260-280 mm</div>
</form>

...
...

<script type="text/javascript">
<!--
function calc(form) { form.result.value= korekce + (Math.round(eval (form.expr.value) / modul)); form.resultat.value= Math.round(eval(form.expr.value) / form.result.value);
form.pocet.value= (1 * form.result.value) - 1; form.cena.value= (cena * form.pocet.value) + 976;}
// -->
</script>

<form action="" onsubmit="return false">
<table>
<tr>
<td style="padding-left: 5px; color: red;">Výška (mm):</td>
<td style="padding-left: 26px; padding-right: 5px"><input type="text" size="15" name="expr" /></td>
<td><input class="tlacitko" type="submit" value="Spočítat cenu" onclick="calc(this.form)" /></td>
</tr>
</table>

...
...

<table class="tabpoptavka">
<tr>
<td>Počet výšek:</td>
<td><input type="text" size="15" name="result" readonly="readonly" /></td>
</tr>
<tr>
<td>Počet (modulů):</td>
<td><input type="text" size="15" name="pocet" readonly="readonly" /></td>
</tr>
<tr>
<td>Výška (mm):</td>
<td><input type="text" size="15" name="resultat" readonly="readonly" /></td>
</tr>
<tr>
<td>Koncová cena (Kč):</td>
<td><input type="text" size="15" name="cena" style="font-weight: bold" readonly="readonly" /></td>
</tr>
</table>

<p>Následným mačkáním tlačítek <input style="width:22px" type="button" value="-" onclick= "(korekce=korekce-1);calc(this.form)" />&nbsp; <input style="width:22px" type="button" value="+" onclick="(korekce=korekce+1);calc(this.form)"/> můžete korigovat počet .</p>

</form>



A teď problém: skript počítá cenu podle zadaných parametrů. Ty se při vstupu zvolí radiobuttonem. Problém nastane při mačkání tlačítek + a -, kdy se koriguje proměnná korekce (je možnost jaksi upřesňovat výpočet). V normálních čílech funguje OK, ale když to někdo přežene (mačká např. "-" moc dlouho", tak se výpočet zhroutí (nejde opakovat po novém zadání, musí se stránka znova načíst). Potřebuji omezit možnost korigování proměnné "modul" např. od 150 do 250, pak aby to napsalo třeba "nelze spočítat" nebo tak něco. Bojuji s tím už druhý den a pořád se motám. Pomůžete?

Díky.
peta
Profil
jakpsatweb - javascript - podminky
jakpsatweb - javascript - priklady
Rado
Profil *
Děkuji za radu :-( Kdybych to téma neprostudoval, nepsal bych. Prostě dělám někde chybu a potřebuji pomoct, proto píšu tady do fóra...
peta
Profil
Rado

"modul" např. od 150 do 250

Nevidim nic, kde by bylo IF, kdeby bylo cislo 150 a cislo 250. Cili ses nepokusil ani podle literatury, ani podle prikladu udelat pro vysledek nic. Proc by ti mel nekdo pomahat?
Jak ti muze fungovat neco, co nemas?
jakpsatweb - javascript - priklady - jsou plne podminek if
jakpsatweb - javascript - podminky - jsou plne podminek
Rado
Profil *
Pokusil, ale nedavam tady nic s chybou. Pokud se podivas na algoritmus vypoctu, reseni otazky je zavisle na promenne "korekce". A v tomto pripade me bohuzel nenapada zadne prijatelne reseni s IF...

Zkus si predtim nez poucujes jaci jsou vsichni neschopni hledat v literature prosim poradne zadani otazky.
peta
Profil
var korekce = 0;
var modul = 190;
var cena = 1586;

function calc(form)
{
form.result.value= korekce + (Math.round(eval (form.expr.value) / modul)); form.resultat.value= Math.round(eval(form.expr.value) / form.result.value);
form.pocet.value= (1 * form.result.value) - 1;
form.cena.value= (cena * form.pocet.value) + 976;
}

(korekce=korekce+1);calc(this.form)

nevsiml jsem si zadnou zavislost na korekci. Ty ji vidis kde?
eval (form.expr.value) -> form.expr.value*1

Kazdopadne to neni podstatne.
"Potřebuji omezit možnost korigování proměnné "modul" např. od 150 do 250"
Omezeni rozsahu se dela podminkou IF (jestlize).
jestlize a<150 a=150;
jestlize a>350 a=350;
form...value.a = a;
jakpsatweb - javascript - podminky
jakpsatweb - javascript - priklady
google.com javascript if example
Coz je odpoved na otazku. Jestli cekas, ze ti nekdo neco udela, za tebe, a ty si to pak zinkasujes.. Treba se nekdo jeste najde. Bezna doba odpovedi je 2-5 dni.

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: