Autor | Zpráva | ||
---|---|---|---|
Jitule Profil * |
#1 · Zasláno: 28. 2. 2020, 12:17:09
Ahoj, snažím se trochu pochopit JS. Mám takovýto script který ovšem funguje pouze když připojím knihovnu
<script language="JavaScript" type="text/javascript" src="jquery.min.js"></script> .
Určitě to lze napsat tak abych nemusel jquery využít. Můžete mi prosím poradit. Díky $(document).ready(function(){ $(document).on('click', ".kalkulacka-start", function() { var sire = $("select[name=kalk_sire]").val(); var navin = $("input[name=kalk_navin]").val(); var prostrih = $("input[name=kalk_prostrih]").val(); var vyska = $("input[name=kalk_vyska]").val(); var delka = $("input[name=kalk_delka]").val(); if ( sire == "53" ) { var out = (delka/100)*((vyska/100)+(prostrih/100))/5.3; } else { if ( sire == "70" ) { var out = (delka/100)*((vyska/100)+(prostrih/100))/7; } else { var out = (delka/100)*((vyska/100)+(prostrih/100))/10.6; } } $(".kalkulacka-out span").text(Math.ceil(out)); $(".kalkulacka-out").show(); }); }); |
||
Tomášeek Profil |
#2 · Zasláno: 28. 2. 2020, 13:13:26
Jitule:
Poradit nebo cele přepsat? Pokud ti někdo dodá cely kód, nic se nenaučis. Zkus to sam/a a vrat se pro radu, až si nebudeš vědět rady s něčím konkrétním. |
||
Jitule Profil * |
#3 · Zasláno: 28. 2. 2020, 14:25:07
Tak zkusila jsem toto: Funguje to jenom když zadám napevno proměnné, ale teď nevím jak tam dostanu tu proměnou z inputu, kterou zadá uživatel. A taky proč mi výsledek vypisuje i když nestisknu tlačítko?
<form> <input type="text" size="10" id="sire" /> <input type="text" size="10" id="vyska" /> <div id="calcDiv"></div> <script> var calc = { vysledek: function () { var pocet = document.getElementById("calcDiv"); var sire = document.getElementById("sire").value; var vyska = document.getElementById("vyska").value; //var sire = "53"; var navin = "1005"; var prostrih = "10";; //var vyska = "200";; var delka = "600";; pocet = (delka/100)*((vyska/100)+(prostrih/100))/5.3; document.getElementById("calcDiv").innerHTML = "<H1>" + pocet + "</H1>"; //return document.write(nahodne); }, }; </script> <script> console.log(calc.vysledek()); </script> <input type="submit" value="spocti" onsubmit="calc.vysledek();"> </form> |
||
_es Profil |
#4 · Zasláno: 29. 2. 2020, 10:55:09
Používaš rovnaké udalosti ako v prvom kóde?
A ak nie, nemôžeš sa čudovať, že sa to celé správa inak. Zmenil si aj HTML kód, v prvom kóde to nevyzerá na klasický formulár s klasickým odosielacím tlačítkom. Ak sa snažíš „trochu pochopit JS“, tak bude vhodnejšie si naštudovať nejaké výukové materiály, než takéto pokusy „naslepo“. |
||
lionel messi Profil |
#5 · Zasláno: 29. 2. 2020, 20:55:47
Jitule:
Tie dva kódy nie sú ekvivalentné. Vybral(a) si sa trošku ťažšou cestou, na začiatok by som tento prístup k objektom radšej vynechal a zistil čo najpresnejšie (ideálne úplne presné) ekvivalenty jQuery metód a atribútov. Môj postup by bol zhruba takýto: 1. Napísal by som si JS funkciu podľa riadkov 3 - 23. Nazval by som ju trebárs vypocet (nie je to najlepší názov, ale som antitechnický typ a ani podľa dobre nazvaných premenných absolútne netuším, čo vlastne počítaš :-)).
• V rámci nej by som namiesto $("select[name=kalk_sire]") a pod. použil metódu querySelector a metódu val nahradil za atribút value. Vieš, aký je v JS syntaktický rozdiel pri prístupe k metódam a k atribútom? Ak nie, skús si o tom niečo prečítať. Malý tip: Prepísať val na values je síce nutné, ale nedostačujúce.
• Namiesto metódy text by som si vybral atribút textContent.
• Namiesto metódy show sa núka viacero možností, ako zviditeľniť element. Atribút style, pridanie/prepnutie triedy… 2. Túto celú funkciu vypocet by som zavesil na potrebný element trebárs pomocou addEventListener.
|
||
Časová prodleva: 4 roky
|
0