Java Caculator
Dit is wat ik momenteel heb:
Quote:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<script type="text/javascript" src="webhostingPrices.js"></script>
</head>
<body>
<form>
<table>
<tr>
<td style="width:119px;">Domeinnaam:</td>
<td>www.<input style="width:160px;" type="text" name="domein" id="domein" value="" /></td>
<td><select name="domeinext" id="domeinext" />
<option value="empty">Extensie</option>
<option value="nl">.nl</option>
<option value="be">.be</option>
<option value="de">.de</option>
<option value="fr">.fr</option>
<option value="it">.it</option>
<option value="pl">.pl</option>
<option value="nu">.nu</option>
<option value="bz">.bz</option>
<option value="at">.at</option>
<option value="fm">.fm</option>
<option value="ch">.ch</option>
<option value="cx">.cx</option>
<option value="cz">.cz</option>
<option value="es">.es</option>
<option value="gd">.gd</option>
<option value="gl">.gl</option>
<option value="gs">.gs</option>
<option value="eu">.eu</option>
<option value="in">.in</option>
<option value="la">.la</option>
<option value="org">.org</option>
<option value="com">.com</option>
<option value="info">.info</option>
<option value="co.uk">.co.uk</option>
</select>
</td>
<td id="prijs_extensie">€ <input type="text" name="extensieprijs" id="extensieprijs" onfocus="this.blur()" size="6" /> p/maand.</td>
</table>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<script type="text/javascript" src="webhostingPrices.js"></script>
</head>
<body>
<form>
<table>
<tr>
<td style="width:119px;">Domeinnaam:</td>
<td>www.<input style="width:160px;" type="text" name="domein" id="domein" value="" /></td>
<td><select name="domeinext" id="domeinext" />
<option value="empty">Extensie</option>
<option value="nl">.nl</option>
<option value="be">.be</option>
<option value="de">.de</option>
<option value="fr">.fr</option>
<option value="it">.it</option>
<option value="pl">.pl</option>
<option value="nu">.nu</option>
<option value="bz">.bz</option>
<option value="at">.at</option>
<option value="fm">.fm</option>
<option value="ch">.ch</option>
<option value="cx">.cx</option>
<option value="cz">.cz</option>
<option value="es">.es</option>
<option value="gd">.gd</option>
<option value="gl">.gl</option>
<option value="gs">.gs</option>
<option value="eu">.eu</option>
<option value="in">.in</option>
<option value="la">.la</option>
<option value="org">.org</option>
<option value="com">.com</option>
<option value="info">.info</option>
<option value="co.uk">.co.uk</option>
</select>
</td>
<td id="prijs_extensie">€ <input type="text" name="extensieprijs" id="extensieprijs" onfocus="this.blur()" size="6" /> p/maand.</td>
</table>
</body>
</html>
Zouden jullie me kunnen uitleggen hoe ik dit moet gaan doen, eventueel een tutorial waar ik van kan leren? b.v.d. Andries.
Er staat ook nergens wat je precies WIL met dit script? Wat wil je precies berekenen?
Gr
Wat wil je optellen dan? De klant kan voor zover ik kan zien maar 1 keuze maken op deze manier.
Zelfs al maak je een prijscalculator zou je dat niet met Javascript moeten doen want op die manier kan je via een XSS injectie alsnog de prijs gewoon simpel aanpassen waardoor je voor bijv. 0 euro een domein kunt kopen.
Gewijzigd op 20/04/2011 11:10:55 door - Mark -
Dillen Meijboom op 20/04/2011 11:05:35:
Zelfs al maak je een prijscalculator zou je dat niet met Javascript moeten doen want op die manier kan je via een XSS injectie alsnog de prijs gewoon simpel aanpassen waardoor je voor bijv. 0 euro een domein kunt kopen.
Dat is niet 100% correct. Een goede programmeur die valideert altijd user-input. Dus, de TS moet kijken of het bedrag dat meegegeven is met het formulier wel kan.
http://gvw-hosting.nl/webhosting/bestellen ) Als je hier in de bron kijkt, zie je dat er een javascript is gebruikt voor het berekenen van de prijzen, in mijn geval is het zo dat ik meerdere stappen aan het maken ben met behulp van php scripts. Heb dit script van mijn collega geprobeerd, maar zonder succes dus ben begonnen aan een script dat hier wel op kan gaan werken. Echter kom ik er zelf momenteel niet uit. Wat betreft dat de prijs nul blijft, is via de weg dat ik doe niet mogelijk, het javascript moet alleen aangeven wat de prijzen zijn p/maand en daar na bij stap 3 aangeven wat de totaal koste zijn excl en incl btw. Bij stap 3 krijgt de cliënt een goed en duidelijk overzicht van zijn/haar bestelling.
Klopt, ik geef je een voorbeeld.. Is de website van een collega van mij. ( Javascript code:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
var prices = []; //Array met prijzen
prices['nl'] = 50;
prices['be'] = 45;
function getPrice(domain) { //'domain' is het gekozen domein dus bijv: nl of be
var price = prices[domain]; //Als domain nl is dan word het: prices['nl']
document.getElementById('extensieprijs').value = price; //Input value word de prijs
}
prices['nl'] = 50;
prices['be'] = 45;
function getPrice(domain) { //'domain' is het gekozen domein dus bijv: nl of be
var price = prices[domain]; //Als domain nl is dan word het: prices['nl']
document.getElementById('extensieprijs').value = price; //Input value word de prijs
}
En ga zo maar door... Er zijn verschillende manieren om de prijs uit te rekenen maar volgens mij klopt het zo.
Je zou overigens ook kunnen werken met de selectedIndex want dan kun je je array zo opmaken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<form>
<table>
<tr>
<td style="width:119px;">Domeinnaam:</td>
<td>www.<input style="width:160px;" type="text" name="domein" id="domein" /></td>
<td><select name="domeinext" id="domeinext" onChange="changeWebhosting();" />
<option value="empty" selected="selected">Extensie</option>
<option value="nl">.nl</option>
</select>
<td id="prijs_extensie">€ <input type="text" name="extensieprijs" id="extensieprijs" onfocus="this.blur()" size="6" /> p/maand.</td>
</tr>
</table>
<table>
<tr>
<td style="width:119px;">Domeinnaam:</td>
<td>www.<input style="width:160px;" type="text" name="domein" id="domein" /></td>
<td><select name="domeinext" id="domeinext" onChange="changeWebhosting();" />
<option value="empty" selected="selected">Extensie</option>
<option value="nl">.nl</option>
</select>
<td id="prijs_extensie">€ <input type="text" name="extensieprijs" id="extensieprijs" onfocus="this.blur()" size="6" /> p/maand.</td>
</tr>
</table>
Volgende wat ik er nu mee doe, ik vul het totaal bedrag in (zonder btw).
Code (php)
1
2
3
4
2
3
4
var ext=0;
var a=document.getElementById("domeinext").value;
if(a=='nl') {ext=0.0;}
else{ext=0;}
var a=document.getElementById("domeinext").value;
if(a=='nl') {ext=0.0;}
else{ext=0;}
Staat hier nu op 0.0 maar je kan er alles in voeren bvb 20/30/40. Nu is de klus, bereken dit bedrag, hij moet aan tonen. Koste p/maand, koste p/jaar, totaal excl btw, wat er bij komt met 19% btw en totaaal incl btw. En dat heb ik eindelijk gevonden en heb ik zo gedaan.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
var extpy= ext;
var extpm= ext/12;
var btwext= ext/100*19;
var btwtt= btwext;
var ttexcl= extpy;
var ttincl= ttexcl+btwtt;
var extpm= ext/12;
var btwext= ext/100*19;
var btwtt= btwext;
var ttexcl= extpy;
var ttincl= ttexcl+btwtt;
En dan tonen in het script, door het volgende te gebruiken.
Code (php)
1
2
3
4
5
2
3
4
5
document.getElementById("extensieprijs").value= Math.round(extpm*100)/100;
document.getElementById("totaalext").value= Math.round(extpy*100)/100;
document.getElementById("totaalexcl").value= Math.round(ttexcl*100)/100;
document.getElementById("btwprocent").value= Math.round(btwtt*100)/100;
document.getElementById("totaalincl").value= Math.round(ttincl*100)/100;
document.getElementById("totaalext").value= Math.round(extpy*100)/100;
document.getElementById("totaalexcl").value= Math.round(ttexcl*100)/100;
document.getElementById("btwprocent").value= Math.round(btwtt*100)/100;
document.getElementById("totaalincl").value= Math.round(ttincl*100)/100;
Dit werkt als een zonnetje, dus voor mij is het probleem gelukkig opgelost. Ty in ieder geval voor jou manier Dillen
Gewijzigd op 24/04/2011 12:07:04 door Andries van Duinen
Om bedragen (3 euro) goed te weergeven als geld (3.00 euro) kan je dit gebruiken:
Als opmerking nog:
Java != JavaScript.
Klopt, maar is in dit geval niet van toepassing aangezien we ook met 49 cent werken.