Rekenmachine

Status
Niet open voor verdere reacties.

uas66

Gebruiker
Lid geworden
29 jun 2013
Berichten
35
Beste,

Op dit moment ben ik bezig met een taxi calculator. Deze berekent het aantal kilometers mbv Google Maps en zet deze om in een prijs.
Hiervoor heb ik twee radio buttons aangemaakt, maar niet kunnen koppelen aan de javasscript. Een checkbox is voor de normale rit en de andere voor een speciale.

Wanneer de afstand onder de 40 kilometer is, is de prijs anders dan boven de 40 kilometer. Er moeten dus in totaal 4 verschillende kilometerprijzen komen. Twee voor de normale rit en 2 voor de speciale.

Op dit moment heb ik alleen dit stukje code:

Code:
if (total<40)
         {
             var cost = parseInt(total) * 1.75;
         }
          else
         {
            var cost = parseInt(total) * 1.50;
         }

Zou iemand me kunnen helpen om dit te kunnen oplossen?

Alvast bedankt!
 
Bedoel je sowiets?


HTML:
<html>
<head>
	<title></title>
	<script type="text/javascript">
	function myFunction(total){
	var total = document.getElementById('TEXTBOX_ID').value;
	var multiplier = 0;
	var cost = 0;
	if (total < 40){
			multiplier = 1.75;
         }
          else{
		  multiplier = 1.50;
         }
		 cost = total * multiplier;
		 document.getElementById("kosten").innerHTML += "<br /> € " + cost;	 
}
	</script>
</head>
<body>
<input type="text" id="TEXTBOX_ID">
<button onclick="myFunction()">Try it</button>

<div id="kosten">
	
</div>
</body>
</html>


[edit] het euro teken wordt door helpmij vervangen, de html code voor het euroteken is: & # 8 3 6 4; (zonder spaties)[/edit]
 
Laatst bewerkt:
Ja, je zit wel in de buurt. Alleen heb ik al een stuk javascript en html en moet dit daarin komen te staan. Alleen heb jij nu maar 2 prijzen geplaatst. Het is de bedoeling dat per checkbox 2 verschillende prijzen staat; dus in totaal 4 verschillende.
 
Beste,

Op dit moment ben ik bezig met een taxi calculator. Deze berekent het aantal kilometers mbv Google Maps en zet deze om in een prijs.
Hiervoor heb ik twee radio buttons aangemaakt, maar niet kunnen koppelen aan de javasscript. Een checkbox is voor de normale rit en de andere voor een speciale.

Wanneer de afstand onder de 40 kilometer is, is de prijs anders dan boven de 40 kilometer. Er moeten dus in totaal 4 verschillende kilometerprijzen komen. Twee voor de normale rit en 2 voor de speciale.

Op dit moment heb ik alleen dit stukje code:

Code:
if (total<40)
{
var cost = parseInt(total) * 1.75;
}
else
{
var cost = parseInt(total) * 1.50;
}
Zou iemand me kunnen helpen om dit te kunnen oplossen?

Alvast bedankt!


Ja, je zit wel in de buurt. Alleen heb ik al een stuk javascript en html en moet dit daarin komen te staan. Alleen heb jij nu maar 2 prijzen geplaatst. Het is de bedoeling dat per checkbox 2 verschillende prijzen staat; dus in totaal 4 verschillende.

welke checkboxen en welke 4 verschillende prijzen?

Je geeft een voorbeeld met 2 prijzen waar we mee moeten werken lols :D.

Nu praat je ook over checkboxes en radiobuttons door elkaar:
[qoute]
radio buttons aangemaakt, maar niet kunnen koppelen aan de javasscript. Een checkbox
[/qoute]

Graag wat verheldering en wat meer info :)



PS: ik denkd at je dit bedoeld??: Je hebt een checkbox die wel of niet checked is. (speciale of normale reis) en 2 radiobuttons (geen idee wat die doen). en wat je wilt is dat als checkbox aangevinkt is dan gaat er een NOG hoger tarief tellen?
En wat is de functie van die 2 radiobuttons dan :P?
 
Laatst bewerkt:
Sorry bedoelde met alles checkboxes heb het door elkaar gehaald, dom dom dom. Maar heb het op een andere manier gedaan. De normale rit heeft nu een prijs onder de 40 en boven de 40. De speciale heeft een 'toeslag' van een percentage.

Helemaal:

Code:
 //<![CDATA[
          var map = null;
          var directionDisplay;
          var directionsService = new google.maps.DirectionsService();

          function initialize() {
            directionsDisplay = new google.maps.DirectionsRenderer();

            var Amsterdam = new google.maps.LatLng(52.138433,5.614014);

            var mapOptions = {  
                        center              : Amsterdam,
                        zoom                : 8,
                        minZoom             : 5,
                        streetViewControl   : false,
                        mapTypeId           : google.maps.MapTypeId.ROADMAP,
                        zoomControlOptions  : {style:google.maps.ZoomControlStyle.MEDIUM}
                    };


            map = new google.maps.Map(document.getElementById('map_canvas'),
                mapOptions);

             //Find From location    
        var fromText = document.getElementById('start');
        var fromAuto = new google.maps.places.Autocomplete(fromText);
        fromAuto.bindTo('bounds', map);
        //Find To location
        var toText = document.getElementById('end');
        var toAuto = new google.maps.places.Autocomplete(toText);
        toAuto.bindTo('bounds', map);
        //  
            directionsDisplay.setMap(map);
            directionsDisplay.setPanel(document.getElementById('directions-panel'));

            /*var control = document.getElementById('control');
            control.style.display = 'block';
            map.controls[google.maps.ControlPosition.TOP].push(control);*/
          }

          function calcRoute() {
            var start = document.getElementById('start').value;
            var end = document.getElementById('end').value;
            var request = {
              origin: start,
              destination: end,
              travelMode: google.maps.DirectionsTravelMode.DRIVING
            };
            directionsService.route(request, function(response, status) {
              if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setDirections(response);
                computeTotalDistance(response);
              }
            });
          }
          function computeTotalDistance(result) {
          var total = 0;
          var myroute = result.routes[0];
          for (i = 0; i < myroute.legs.length; i++) {
            total += myroute.legs[i].distance.value;
          }
          total = total / 1000;
          /*Start Calculating Distance Fair*/
  if (total<40)
         {
             var cost = parseInt(total) * 1.75;
         }
          else
         {
            var cost = parseInt(total) * 1.50;
         }
// retour en extrakosten
              var fare = cost;
              var fare = Math.round(fare*100)/100;
              
              var fare = Math.round(fare*100)/100;
if(document.getElementById("doubleFare").checked)
{
   fare = fare * 2;
}


if(document.getElementById("speciaal-rit").checked)
{
   fare = fare * 1.18;
}

          /*Distance Fair Calculation Ends*/

          document.getElementById("total").innerHTML = "Totale afstand is " + total + " kilometer <br /> De kosten zijn &euro;" + fare;
          }

        function auto() {
        var input = document.getElementById[('start'), ('end')];
        var types
        var options = {
           types: [],
           componentRestrictions: {country: ["NL"]}
            };
            var autocomplete = new google.maps.places.Autocomplete(input, options);
         }

          google.maps.event.addDomListener(window, 'load', initialize);

Calculator:

Code:
 /*Start Calculating Distance Fair*/
  if (total<40)
         {
             var cost = parseInt(total) * 1.75;
         }
          else
         {
            var cost = parseInt(total) * 1.50;
         }
// retour en extrakosten
              var fare = cost;
              var fare = Math.round(fare*100)/100;
              
              var fare = Math.round(fare*100)/100;
if(document.getElementById("doubleFare").checked)
{
   fare = fare * 2;
}


if(document.getElementById("speciaal-rit").checked)
{
   fare = fare * 1.18;
}

Aleen is het probleem nu dat ik de totale afstand en prijs niet afgerond krijg. Ik krijg prijzen zoals: €181.50000000000003 of kilometers als: 110.946.
 
Dat kan met:

PHP:
round($var,2);

SDorry dat was php :P (andere vraag)

Code:
num.toFixed(2)
of
Code:
Math.round(value*100)/100
 
Laatst bewerkt:
Thanks mastermindzh, ik zag dat ook al op internet, maar wist niet waar ik het moest toevoegen in mijn code. Kan je me misschien hiermee helpen?
 
vervang
HTML:
          /*Distance Fair Calculation Ends*/
          document.getElementById("total").innerHTML = "Totale afstand is " + total + " kilometer <br /> De kosten zijn &euro;" + fare;


met

HTML:
         /*Distance Fair Calculation Ends*/
total = total.tofixed(2);
fare = total.tofixed(2);
          document.getElementById("total").innerHTML = "Totale afstand is " + total + " kilometer <br /> De kosten zijn &euro;" + fare;
 
Heb het geprobeerd, maar krijg nu geen resultaat... Na het klikken op berekenen, krijg ik geen resultaat.
 
Wat je ook kunt doen (dit is iets minder nauwkeurig, maar het scheelt hooguit een aantal centen op een dag.):

Voeg deze functie toe:

[JS]function roundToTwo(value) {
return(Math.round(value * 100) / 100);
}
[/JS]
vervolgens kan je deze dan uitvoeren om een getal af te ronden naar 2 decimalen.


[JS]var x = roundToTwo(5.3423848247374347);[/JS]

zou er voor zorgen dat "x" dus 5.34 wordt
 
Bedankt, maar vond de andere optie toch beter. Waarom werkt deze niet?
 
Bedankt, maar vond de andere optie toch beter. Waarom werkt deze niet?

Omdat ik dom ben :D!

zo zou het wel moeten werken :o
[JS]total = parseFloat(total).toFixed(2);
fare = parseFloat(fare).toFixed(2);
document.getElementById("total").innerHTML = "Totale afstand is " + total + " kilometer <br /> De kosten zijn &euro;" + fare;[/JS]
 
Eh, bij de huidige prijzen geloof ik dat het voordeliger is voor de klant om in de buurt van de 40km een paar km te laten omrijden! :D
Bv.:
  • 38km à 1.75 ---> € 66,50
  • 39km à 1.75 ---> € 68,25
  • 40km à 1.50 ---> € 60,00 !
  • 45km à 1.50 ---> € 67,50 !
Oftewel: als ik bij een rit van 39km de chauffeur vriendelijk vraag om even 6km om te rijden, ben ik nog steeds goedkoper uit dan bij de rit zonder omweg! ;)

Een dergelijke "meer = goedkoper" sprong kan je vermijden door de eerste 40km altijd op 1.75 te houden, en alleen voor de km's boven de 40 de reductieprijs te rekenen.
 
Laatst bewerkt:
@css hunter

Alhoewel je natuurlijk gelijk hebt, is het systeem waarschijnlijk anders opgebouwd.

De stad waar meneer in rijd zal waarschijnlijk het meeste binnen het 40km bereik hebben. (winkelcentra, concerthallen, etc. , etc.)
Dat is dus in de stad, waar men vaker moet stoppen en meer benzine zal gebruiken (start - stop, schakkelen etc. etc.)

De 40km + zal vooral ritjes zijn naar het vliegveld o.i.d (waar je dus in zijn 5 over de snelweg kanjerd) en dat zal benzine besparen (vandaar de goedkopere prijs).
Over het algemeen is het ook wel bekend dat je in de stad veel hogere tarieven betaald dan daarbuiten. En als de rit te kort is nemen de meeste chauffeurs je al niet eens mee :confused:

Echter kan het ook nog dat de chauffeur in dit geval ook nog geld vraagt voor de tijd die de rit duurt (dit is een normaal iets). Die 6km omrijden in de stad kan dan alsnog duurder worden!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan