Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

Diskuze: Příliš mnoho podmínek v JavaScript

JavaScript JavaScript Příliš mnoho podmínek v JavaScript American English version English version

Aktivity (1)
Avatar
Josef Petrák:10. června 17:35

Dobrý den,

chtěl bych se prosím zeptat, jaký je nejjednodušší způsob na
programování tohoto příkladu na webové stránky. Rád bych si to vytvořil
sám, ale připadá mi, že můj způsob je příliš složitý, protože by tam
bylo spousta podmínek. Šlo by o vypočítávání objemu, rozměrů a cen
nádrží, s využitím běžného vzorce pro objem kvádru.

Něco podobného, jako je
zde: https://www.calculatorsoup.com/…larprism.php
, ale chtěl bych to ještě vylepšit přinejmenším o to, že by mohli zadat
rozměry nádrže v libovolných jednotkách (mm, cm, m, atd.), přičemž
výsledek by se ukázal ve vícero jednotkách najednou (litry, m3, apod).
K tomu by byly ještě další varianty, kdy budou znát buď všechny strany
nádrže anebo třeba jen 2 strany + objem a dopočítá se výška atd. Variant
výpočtů k objemu, cen atd by byla celá řada.

Když to budu dělat přes podmínky (if), tak jich bude opravdu mnoho.
Potřeboval bych proto poradit, jestli to dělat přes podmínky, cykly,
anebo přes úplně něco jiného.

Velice děkuji za jakoukoliv radu, Petrák

Zkusil jsem: Zkoušel jsem to vytvořit přes podmínky.

Chci docílit: Zjednodušení kódu

 
Odpovědět 10. června 17:35
Avatar
David Hynek
Redaktor
Avatar
David Hynek:10. června 20:51

kdyz neuvedes svuj kod tak asi neporadime. Ale ja JS pouzivam i na mnohem slozitejsi vypocty a bez problemu. Nejak nerozumim pojmu "prilis mnoho podminek"

Editováno 10. června 20:53
Nahoru Odpovědět 10. června 20:51
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na David Hynek
Josef Petrák:10. června 21:36

To co jsem se snažil udělat nebylo funkční tak jak by mělo. Spíš mi jde
o to, že je hodně variant kombinací a já nevím jestli je správné na
každou z nich vytvářet podmínku. Obecný příklad: Kdyby rozměr bylo možné
dát v 10 libovolných jednotkách a výsledek by se měl zobrazit v jedné z
10 jednotek, znamená to, že se musí udělat 10x 10 = 100 podmínek anebo
se to dělá nějakým jednodušším a co do velikosti kódu kratším způsobem?
Děkuji

 
Nahoru Odpovědět 10. června 21:36
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Josef Petrák
Petr Stastny:10. června 22:20

Správně jsi přišel na to, že to jde udělat lépe. Nejjednodušší je to udělat tak, že vstup si vezmeš v nějaké jednotce, převedeš třeba na m (nebo na jinou základní jednotku) a potom to spočítáš a převedeš na koncovou jednotku, potom bys měl jenom 20 podmínek.

Ale jde to udělat ještě lépe: Naše jednotky jdou po desítkách: Udělej si třeba pole jednotek délky (mm, cm, dm, m, --, --, km) - každé políčko je *10 (proto jsou před kilometrem vynechaná políčka). Dokážeš přijít na to, jak tohle pole použít na to, abys mohl převádět jednotky (třeba m na km) jednoduše a elegatně? Když to uděláš dobře, půjde jeden kód použít na jednotky vzdálenosti, času, ... - jenom si pro kažý druh jednotek připravíš pole.

 
Nahoru Odpovědět 10. června 22:20
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Josef Petrák
Marek Uhlik:10. června 22:26

No a nestačilo by zadat to v nějaké jednotce , převést si to na základní jednotky,potom vypočítat a pak to převedeš zase na nějakou jednotku ?

 
Nahoru Odpovědět 10. června 22:26
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Marek Uhlik
Petr Stastny:11. června 6:24

Ano, takhle jsem myslel 1. cast sve odpovedi. Ta druhela cast je o tom, ze kdyz si udela tabulku prevodu, nebude muset do zblbnuti delat

if(x="km" && y="m") x *= (1/1000.0)

 
Nahoru Odpovědět 11. června 6:24
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Petr Stastny
Marek Uhlik:11. června 7:30

No jasný.Taky mi přijde tabulka převodů asi nejlepší řešení..Já tam předtím neviděl ,že už jsi tam něco napsal a když jsem to dopsal tak už bylo pozdě. :D

 
Nahoru Odpovědět 11. června 7:30
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Josef Petrák
Peter Mlich:11. června 7:45

'nebylo funkční'
A jak chces zjistit, kde mas v kodu chybu, kdyz si jej nechavas pro sebe?

Chyby funkcnosti se daji najit pres javascriptovou / webovou konzolu. Ve Firefox je to Nastroje - Vyvoj webu - webova konzola. Pak otevres tvou stranku nebo das F5, pokud ji uz mas, a vypise to funkcni chyby. Logicke chyby to neresi, to musis vedet ty, zda je to ok. Ale na ty se da prijit postupnym alertovanim promennych.

<script>
var a,b,c;
a = 2;
b = 3;
c = 4;
alert(['objem kvadru', a * b * c]);
</script>
 
Nahoru Odpovědět 11. června 7:45
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Josef Petrák
Petr Stastny:11. června 8:14

Debugovací okno otevřeš F12. Doporučuju to nedělat, jako říkal Petr Milch - normálně v debugovacím okně můžeš prohlížet proměnné, krokovat kód... Najdi si video, jak se to používá. A kdybys chtěl vypsat nějakou proměnnou, nepoužívej alert, ale console.log

a=10;
console.log(a);

Tohle vypisuje věci (můžeš tomu dát cokoliv: proměnnou, text, číslo, objekt, ...) přímo do konzole, kde se ti to hezky zobrazí, můžeš tím scrollovat...

Ten alert jenom zobrazí vyskakovací okno a jakmile ho zavřeš, zmizí, ale v consoli bude to, co jsi napsal pomocí console.log pořád a můžeš se tím jednoduše probírat.

Editováno 11. června 8:15
 
Nahoru Odpovědět 11. června 8:14
Avatar
Odpovídá na Josef Petrák
Vladislav Ladicky:11. června 12:06

Ja len, že v tom príklade čo si uviedol na priloženom linku nemusí byť použitý ani jeden "if".

 
Nahoru Odpovědět  +2 11. června 12:06
Avatar
Josef Petrák:11. června 20:57

Zatím díky všem, zkusím to tím způsobem: převod do základní jednotky, potom výpočet a na závěr převod do požadované jednotky.

 
Nahoru Odpovědět 11. června 20:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.