Javascript - vypis celkovej sumy

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 celkovej sumy

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

Zdravim
Takze potrebujem zhotovit script, ktory vypocita aktualnu sumu (a hned ju vypise) zadanych produktov ktore si uzivatel zadal... V jednej casti stranky kde si uzivatel vybera webhosting som to zmakol. Lenze teraz potrebujem vyriesit objednavku hernych serverov ktore je trocha komplikovanejsie... Dajme tomu mam 1 slot ktory stoji 0,45 € minimalne si moze uzivatel kupit na svoj gamehosting 12 a maximalne 32 slotov. To som spravil takto :

Kód: Vybrať všetko

sloty=document.getElementById('sloty').value;
	  if(sloty=="12") { sloty=5.40; }
          .... 
          ....
niekolko slotov * 0,45 a je to. To by bola strana s Counter strike 1.6 no lenze CS:Source ma iny cennik.
Za CS 1.6 Public server, 16 slotov by som zaplatil : 7,20 € no za CS:S Public , 16 slotov by som zaplatil 10€
to som vyriesil tak, ze rovnica ostane cena=sloty*obdobie no ktomu este pripocitam + 2,80 € (t.j. rozdiel medzi 10 a 7,20)
A problem je taky, ze CS 1.6 Public je lacnejsi ako CS:S . A CS 1.6 Klanovy server, je drahsi ako CS:S Klanovy server... Ako to vyriesim? :(
Neviem ci spravit 2 rozne scripty na to alebo co... Nechapem tomu ako to spravim.

//autoeditácia príspevku (20 Feb 2011, 19:26)
JS vyzera takto:

Kód: Vybrať všetko

 function cenaa(){
      
      var cena = 0;
	  
      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; }
      sloty=document.getElementById('sloty').value;
	  if(sloty=="12") { sloty=5.40; }
	  if(sloty=="13") { sloty=5.85; }
           ...
	  if(sloty=="31") { sloty=13.95; }
	  if(sloty=="32") { sloty=14.40; }
       var hra=document.getElementById('cs-16');
      if (hra.checked){
      cena=sloty*obdobie;
      }
	   var hra=document.getElementById('cs-source');
      if (hra.checked){
      cena=(sloty*obdobie)+2.80;
      ??? Tu by mal byt zrejme kod problemu ???
	  
	  }
    
      cena=Math.round(cena * 100) / 100
      document.getElementById('cena').value = cena;
    }
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: Javascript - vypis celkovej sumy

Príspevok od používateľa sharky-no »

ako to chces predavat?
moze si clovek kupit CS1.6 server a CS:S naraz?? alebo sa to vzajomne vylucuje?

//autoeditácia príspevku (20 Feb 2011, 20:31)

pre pripad, ze si moze zakaznik kupit len 1 server:

Kód: Vybrať všetko

function cenaa(){
     
      var cena = 0;
    
      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; }
      
      

       var cs16=document.getElementById('cs-16');
       var css=document.getElementById('cs-source');
    
      if (cs16.checked){
      sloty=document.getElementById('sloty').value;
      if(sloty>="12" && sloty<="32" ) sloty=sloty*0.45;
      else sloty=0;
      cena=sloty*obdobie;
      }
      else if (css.checked){
       sloty=document.getElementById('sloty').value;
      if(sloty>="12" && sloty<="32" ) sloty=sloty*0.625;
      else sloty=0;
      cena=sloty*obdobie;
     }
   
      cena=Math.round(cena * 100) / 100
      document.getElementById('cena').value = cena;
    }
ked tam budes chcet pridat aj ten CS1.6 klanovy, tak proste pridas dalsie else if po vzore tych predchadzajucich ale das tam inu cenu za 1 slot.

hadam som sa nikde nepomylil :}
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 celkovej sumy

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

Uau. Dakujem :) Da sa povedat ze tomu kodu celkom aj chapem. Len nechce to ist... V JS som totalne lama. Prosim kde je chyba ked je JS ako si napisal a html vyzera takto?

Kód: Vybrať všetko

<form id="contact" action="/objednavka-herne-servery-2" method="POST">
				<fieldset>
					  <label for="name" id="name_label"><b>Hra*</b></label>
					<tr>
                                          <td class="check">
                                          <select name="hra" id="hra" onchange="cenaa()">
                                            <option>-Vyberte si-</option>
					    <option value="cs-16">Counter strike 1.6</option>
                                            <option value="cs-source">Counter Strike Source</option>
                                         </select>
                                         </td>
		                       </tr><br>
				  
				  <label for="name" id="name_label"><b>Typ*</b></label>
					<tr>
                                      <td class="check">
                                         <select name="typ" id="typ" onchange="cenaa()">
                                             <option value="public">Public (verejný)</option>
                                             <option value="tg-cw">TG/CW (klanový)</option>                                         
                                         </select>
                                      </td>
		                        </tr><br>

				  <label for="name" id="name_label"><b>AMX*</b></label>
			                  <tr>
                                      <td class="check">
                                         <select name="amx" id="amx">
                                             <option value="ano">Áno</option>
                                             <option value="nie">Nie</option>                                         
                                         </select>
                                      </td>
		                            </tr><br>
									
				   <label for="name" id="name_label"><b>Počet slotov*</b></label>
								    <tr>
                                      <td>
					<select name="sloty" id="sloty" onchange="cenaa()">
                                           <option value="12">12</option>
                                           <option value="13">13</option>
                                           <option value="14">14</option>
                                           <option value="15">15</option>
                                           <option value="16" selected="selected">16</option>
                                           ....
                                           <option value="32">32</option>
                                         </select>
							          </td>
		                            </tr><br>

				                  <label for="name" id="name_label"><b>Obdobie*</b></label>
					<tr>
                                      <td class="check">
                                         <select name="obdobie" id="obdobie" onchange="cenaa()">
                                             <option value="1mesiac">1 mesiac</option>
                                             <option value="2mesiace">2 mesiace</option>   
					     <option value="4mesiace">4 mesiace</option>
					     <option value="6mesiacov">6 mesiacov</option>
					     <option value="12mesiacov">12 mesiacov</option>
                                         </select>
                                      </td>
		                            </tr><br>
											  
				                  <label for="name" id="name_label"><b>Spôsob platby*</b></label>
								    <tr>
                                      <td class="check">
                                         <select name="platba" id="platba">
                                             <option value="internet_banking">Internet Banking</option>
                                             <option value="paypal">Paypal</option>
                                         </select>
                                      </td>
		                            </tr><br>
									                              
                     <p class="cena2">Celková cena: <input type="text" name="cena" id="cena" value="0" />€</p>								 
								 <br />
								<input type="submit" name="submit" class="but" id="submit_btn" value="Ďalej"/>
              
								</fieldset>
							  </form>
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 celkovej sumy

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

nemáš tam nikde input s id cs-16. To si sa mohol ale spýtať aj chybovej konzoly a nemusel si sem písať :)

Kód: Vybrať všetko

Chyba: cs16 is null
Zdrojový súbor: file:///C:/Documents%20and%20Settings/audiotrack/Desktop/Untitled-2.html
Riadok: 32
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: Javascript - vypis celkovej sumy

Príspevok od používateľa sharky-no »

paci sa, mal si tam zle ziskavanie informacie o tom ktoru hru mas vybratu..

Kód: Vybrať všetko

function cenaa(){
     
      var cena = 0;
   
      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; }
     
     

       var hra=document.getElementById('hra');
       var sloty=document.getElementById('sloty').value;
  
      if (hra.value=="cs-16"){
      sloty=sloty*0.45;
       
      cena=sloty*obdobie;   
      }
      else if (hra.value=="cs-source"){
      
      sloty=sloty*0.625;
      
      cena=sloty*obdobie;   
     }
   
      cena=Math.round(cena * 100) / 100
      document.getElementById('cena').value = cena;
    }
        
//ja kym so to polepil do html :lol: pomaly som
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 celkovej sumy

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

jj to je ok to funguje dakujeeem :) Audiotrack aka chybova konzola? Kde to zozeniem? :D Lenze pocujte. Este tam je ten problem ze
CS 1.6, Public, 12 slotov - je lacnejsi ako CS Source, Public, 12 slotov a
CS 1.6, Klanovy (Tg/Cw), 12 slotov - je drahší ako CS Source, Klanovy, 12 slotov

Oni maju taky blby cennik. Neviem zrejme by sa malo doplnit nieco pod to ze ked uzivatel zada pre aku chce hru napr. Cs 1.6 tak to bude mat pod "rovnice". Jedna rovnica bude na public, druha na Klanovy (Tg/Cw). A zasa to iste pod rovnice spravit na CS:S . Da sa to nejako?

Kód: Vybrať všetko

 if (hra.value=="cs-16"){
      sloty=sloty*0.45;
       
      cena=sloty*obdobie;   
      }
do vnutra alebo pod to doplnit dalsie else if? Ci nejako inak to funguje?
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 celkovej sumy

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

chybova konzola je v kazdom prehliadaci.
sharky-no
King
King
Používateľov profilový obrázok
Príspevky: 1681
Registrovaný: 31 okt 2006, 19:53

Re: Javascript - vypis celkovej sumy

Príspevok od používateľa sharky-no »

ano je to tak ako hovoris, staci pridat 2 podmienky, a premennu typ

nejako takto

Kód: Vybrať všetko

typ=document.getElementById('typ');
if (hra.value=="cs-16"){    
        if(typ.value=="public") sloty=sloty*0.45;
        else  sloty=sloty*0.60;
      cena=sloty*obdobie;   
      }
proste zas si tam len vlozis cenu za 1 slot pre CS1.6 klan/public

zbytocne sa trapis a ratas si ze co je lacnejsie a co drahsie, potom ta to matie a vymyslas rovnice ktore nefunguju spravne, resp. su vhodne len pre 1 typ.
staci si len zistit cenu 1 slotu pre rozne kombinacie (aj ked pridas AMX tak bude mat inu cenu si myslim) a potom uz len podmienkujes.
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 celkovej sumy

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

Uaaa :) Super funguje ako ma :) Dakujeeem moc moc moc moc velmi si mi pomohol. :roll:
Napísať odpoveď