Javascript - vypis cisla

Programovacie jazyky, rady, poradňa...
sipik
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 102
Registrovaný: 24 sep 2009, 19:59
Kontaktovať používateľa:

Javascript - vypis cisla

Príspevok od používateľa sipik »

Zdravim
Spravil som script na pocitanie aktualnej ceny, a jej vypis. Funguje to takto:

Kód: Vybrať všetko

function cenaa(){
      
      var cena = 0;
      
      balik=document.getElementById('balik').value;
	  if(balik=="standard") { balik=2; }
	  if(balik=="neobmedzeny") { balik=3.30; }
	  if(balik=="multi") { balik=10; }
      obdobie=document.getElementById('obdobie').value;
	  if(obdobie=="1mesiac") { obdobie=1; }
	  if(obdobie=="2mesiace") { obdobie=2; }
	  if(obdobie=="4mesiace") { obdobie=4; }
	  if(obdobie=="6mesiacov") { obdobie=6; }
	  if(obdobie=="12mesiacov") { obdobie=12; }
      koncovka=document.getElementById('koncovka').value;
	  if(koncovka=="sk") { koncovka=19; }
	  if(koncovka=="com") { koncovka=11; }
	  if(koncovka=="net") { koncovka=11; }
	  if(koncovka=="eu") { koncovka=10; }
	  if(koncovka=="biz") { koncovka=10; }
	  if(koncovka=="info") { koncovka=8; }
	  if(koncovka=="name") { koncovka=10; }
	  if(koncovka=="org") { koncovka=10; }
	        
	  cena=(balik*obdobie)+koncovka;
   
      document.getElementById('cena').value = cena;
    }
lenze toto mi vypíše napr. ked uzivatel zada neobmedzeny na 12 mesiacov, a koncovku .sk, tak chcem, aby script vypisal vysledok na 2 desatinne miesta. Script by mal vypisat sumu 58,60 € namiesto toho vypise 58.599999999999994 €. Ako to spravit?
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa weroro »

Nie som extra Javascript znalec, ale riešil by som to úpravou vzorca (keďže nepoznám funkcie v JS).
V AS (ktorý je podobný JS) by som to urobil asi takto:

Kód: Vybrať všetko

cena = balik*obdobie;
cena = Math.floor(cena)+((Math.round((cena-Math.floor(cena)))*10)/10);
if (cena.toString.substr(cena.toString.length-1, cena.toString.length) == '0') {
	cena2 = cena+'0';
} else {
	cena2 = cena;
}
document.getElementById('cena').value = cena2+koncovka;
Možno dosť psycho zápis, ale nič lepšie ma takto na rýchlo nenapadlo a je to napísané z hlavy.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Javascript - vypis cisla

Príspevok od používateľa BX »

caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa caesar1987 »

ja som to vzdy riesil takto

Kód: Vybrať všetko

Math.round(suma * 100) / 100
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa weroro »

caesar1987 napísal:ja som to vzdy riesil takto

Kód: Vybrať všetko

Math.round(suma * 100) / 100
:smt044 Ja som ale Lama.
sipik
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 102
Registrovaný: 24 sep 2009, 19:59
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa sipik »

ouha. Weroro to co si napisal. No spanielska dedina :D ... Teda pre niekoho ako ja :D . Skusim som to co ste poslali. Skusal som to upravit a dosadit do scriptu len nechce to ist stale :( . Neviem ci som to dobre zapisal... :/

//autoeditácia príspevku (11 Feb 2011, 17:57)
Uz funguje :) Vyborne super :) . Vsetci K+ a dakujem :)

//autoeditácia príspevku (11 Feb 2011, 18:16)
Mam este jeden taky problemik. Do scriptu chcem dosadit radio button na zmenenie rovnice.

Kód: Vybrať všetko

<input type="radio" name="zisteniedomeny" value="nezaregistrovana"> Ešte nemám vlastnú doménu, chcem registrovať túto:<br>
<input type="radio" name="zisteniedomeny" value="zaregistrovana"> Doménu mám už zaregistrovanú, chcem pracovať s touto doménou:<br>
Ze ked uzivatel zada nezaregistrovana, tak script pracuje normalne. Normalne vypise aktualnu sumu ako ma byt. Naopak ked uzivatel zada zaregistrovana, tak rovnica sa zmeni tak, ze nebude nacitavat cenu domenovej koncovky ze cena bude len cena=(balik*obdobie) a nie cena=(balik*obdobie)+koncovka. Tak ako to spravit?
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Re: Javascript - vypis cisla

Príspevok od používateľa juho »

obycajne cez jeden if napriklad ako cena-=koncovka
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa caesar1987 »

pridaj si na tie radiobuttony idcka, napr id="nezaregistrovana" a id="zaregistrovana"
a potom

Kód: Vybrať všetko

var x=document.getElementById("nezaregistrovana");

if (x.checked){
//nezaregistrovana
}
pisal som to len z hlavy tak dufam, ze som tam nenapisal blbost..
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa audiotrack »

ale napísal, getElementsById() funkcia neexistuje. Keby si tam namiesto toho "s" dal radšej bodkočiarku za riadok, tak je to lepšie ;)
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa caesar1987 »

:) opravene :)
mal by som si to po sebe precitat ked to napisem :D dakujem za opravu
sipik
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 102
Registrovaný: 24 sep 2009, 19:59
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa sipik »

Dakujem za rady :). A pocujte co znamena to var x? a potom x.checked . Za to x dosadim to co mam v name radiobuttonu?
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa caesar1987 »

var x je premenna s menom x

var x=document.getElementById("nezaregistrovana"); - do premennej priradis prvok ktory ti vrati funkcia getElementById

x.checked - informacia o tom ci je ten priradeny prvok oznaceny alebo nie

to x mozes prepisat na cokolvek, ale nech to je na oboch miestach rovnake, lebo to je rovnaka premenna

nie neprepisuj tam nic, len ako som pisal pridaj si na tie radiobuttony idcka, napr id="nezaregistrovana" a id="zaregistrovana"

a potom si prisposob ten kod ktory som pridal pre svoje potreby.
sipik
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 102
Registrovaný: 24 sep 2009, 19:59
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa sipik »

Super :) Uz mi to funguje ako ma. Len skoda ze tie radiobuttony nemaju dynamiku. Som skusil vsetko vyplnit aj koncovku aj vsetko a zaratalo a bola tam nejaka cena. Ale ked som klikol naspat ze domenu uz mam, tak sa mala zmenit rovnica aj sa zmenila. Len cena sa nezmenila. Vtedy to treba nejak refresnhnut trebars mam tam zadane ze domenu este nemam tak je rovnica cena=(balik*obdobie)+koncovka . a kliknem na domenu uz mam, tak rovnica sa zmeni na cena=(balik*obdobie) ale cena sa nezmeni a ked mam vtedy napr. suma 39 € a koncovka .sk tak kliknem na .com cena sa zmeni a zasa na .sk tak uz tam nieje 39€. Uz tam je mensia cena. Ze sa to proste zmeni az po takomto nejakom refreshnuti . Dalo by sa to nejak vyriesit? Aby sa hned rovnica refreshla a napisala aktualnu sumu? JS je takyto teraz:

Kód: Vybrať všetko

function cenaa(){
      
      var cena = 0;
	  
      balik=document.getElementById('balik').value;
	  if(balik=="standard") { balik=2; }
	  if(balik=="neobmedzeny") { balik=3.30; }
	  if(balik=="multi") { balik=10; }
      obdobie=document.getElementById('obdobie').value;
	  if(obdobie=="1mesiac") { obdobie=1; }
	  if(obdobie=="2mesiace") { obdobie=2; }
	  if(obdobie=="4mesiace") { obdobie=4; }
	  if(obdobie=="6mesiacov") { obdobie=6; }
	  if(obdobie=="12mesiacov") { obdobie=12; }
      koncovka=document.getElementById('koncovka').value;
	  if(koncovka=="sk") { koncovka=19; }
	  if(koncovka=="com") { koncovka=11; }
	  if(koncovka=="net") { koncovka=11; }
	  if(koncovka=="eu") { koncovka=10; }
	  if(koncovka=="biz") { koncovka=10; }
	  if(koncovka=="info") { koncovka=8; }
	  if(koncovka=="name") { koncovka=10; }
	  if(koncovka=="org") { koncovka=10; }
       var zisteniedomeny=document.getElementById("nezaregistrovana");
      if (zisteniedomeny.checked){
      cena=(balik*obdobie)+koncovka;
      }
	   var zisteniedomeny=document.getElementById("zaregistrovana");
      if (zisteniedomeny.checked){
      cena=(balik*obdobie);
      }
    
      cena=Math.round(cena * 100) / 100
      document.getElementById('cena').value = cena;
    }
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa caesar1987 »

tak volaj tu js funkciu cena pri kazdom radio buttone

Kód: Vybrať všetko

<input type="radio" name="xxx" value="yyy" onClick="cena()" />
a aj do selectov

Kód: Vybrať všetko

<select name="xxx" onchange="cena()"> 


a potom mozes spravit aj optimalizaciu toho existujuceho kodu :)
sipik
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 102
Registrovaný: 24 sep 2009, 19:59
Kontaktovať používateľa:

Re: Javascript - vypis cisla

Príspevok od používateľa sipik »

Jaaaj no jasneee :) Dikes . Skusim.

//autoeditácia príspevku (13 Feb 2011, 8:57)
Joo super :) Fugnuje ako ma. Dakujem moc :)
Napísať odpoveď