Archief - vaste waarden variabel maken

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

dask

Legacy Member
Ben op zoek naar iemand die mij op weg kan helpen met het maken van een functie in JS.

Ik heb een aantal waarden (vb A, B en C) die in een andere functie worden gebruikt om berekeningen te maken.

A, B en C moeten variabel worden naargelang de radiobutton die geselecteerd is?
(met bv 2 tarieven: tarief1 en tarief2 als keuze)

Dus als tarief1 geselecteerd wordt, krijg je A1, B1 en C1 in de berekeningen en bij tarief2: A2,B2 en C2)

dask

Legacy Member
W0utR zei:

Alvast bedankt, komt aardig in de buurt van wat ik wil :)

Ik snap alleen niet goed hoe ik dan in de berekeningen de waarde van A1 (200) en A2 (500) kan plaatsen.
Code:
in tariefA:
                var cost = ((total * A1) + A2)

in tariefB:
                var cost = ((total * B1) + B2)

W0utR

Legacy Member
Code:
if(value == "A") { 
    var cost = ((total * A1) + A2)
} else if(value == "B") {
    var cost = ((total * B1) + B2)
}

YaMo

Legacy Member
Code:
var value = $('input:checked').val();
var myValues = values[value];
var cost = total * myValues[0] + myValues[1];

bealzebub

Legacy Member
Eigenlijk zit je hier met overduidelijke business logic die in z'n eigen model (Javascript prototype) moet gestoken worden en waar je tests op moet schrijven, maar soit…

dask

Legacy Member
Ik heb de jsFizzle van WoutR en de begincode van YaMo proberen in te planten in de Google Maps code, maar ik denk dat nog niet alles goed staat bij het plaatsen van de var's.


edit:
Na het verwijderen van de '$('input').change(function() {........});
werkt deze oplossing ook.

Bedankt voor de input :niceone:

in de HTML heb ik dus:
Code:
<input type="radio" name="user" value="A">tarief A
<input type="radio" name="user" value="B">tarief B

en dan in de functie het script:
Code:
function computeTotalDistance(result) {
          var values = [];
	  values['A'] = [3, 0.5, 0.75, 0.50, 0.75, 1, 12.5, 37.5];
	  values['B'] = [3.15, 0.65, 1.05, 0.65 , 0.9, 1.15, 16.25, 45];
          var value = $("input[@name=user]:checked").val();
	  var myValues = values[value];
	  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;
	  var total2 = Math.round(total);
              if (1>total){
              var cost = myValues[0];
              }
			  else if (1<total && 2>total) {
			  var cost = myValues[0] + myValues[1];
			  }
			  else if (2<total && 3>total) {
			  var cost = myValues[0] + myValues[2];
			  }
            etc....


of met:
Code:
var value = $("input[@name=user]:checked").val();
        if (1>total){
		if(value == "A") { var cost = 3;} 
                else if(value == "B") { var cost = 3.15;}
                      }

etc....

dask

Legacy Member
Nog even terug inpikken op deze functie:

ik wil nu graag via een tekstbox een waarde invoeren en dan de uitkomst te voorschijn laten komen, ik heb geprobeerd het scriptje wat aan te passen maar krijg het niet werkend

edit: nog wat verbeteringen aangebracht, maar nog steeds niets :(

Code:
    <input type="radio"  name="user" value="A">A
    <input type="radio"  name="user" value="B">B
    <input type="text" id="aantalkm" name="aantalkm" size="3"><br/>
    <input type="button" name="calculate" onclick="calculateFare()" value="calculate">
    <div id="result"></div>

Code:
<script type="text/javascript">
	function calculateFare() {
		   var values = [];
				values['A'] = [3, 0.5, 0.75, 0.50, 0.75, 1, 12.5, 37.5];
				values['B'] = [3.15, 0.65, 1.05, 0.65, 0.9, 1.15, 16.25, 45];
                   var value = $("input[@name=user]:checked").val();
		   var myValues = values[value];
			
		   var aantalkm = parseInt(document.getElementById('aantalkm'));
              if (1>=aantalkm){
              var fare = myValues[0];
              }
			  else if (1<aantalkm && 2>=aantalkm) {
			  var fare = myValues[0] + myValues[1];
			  }
			  else if (2<aantalkm && 3>=aantalkm) {
			  var fare = myValues[0] + myValues[2];
			  }
enz.....
              else if (75<=aantalkm) {
              var fare = (((aantalkm - 75) * myValues[5]) + (myValues[6]) + (myValues[7]) + 2);
               }
             
         document.getElementById('result').innerHTML = fare;
    	}
</script>

Moto

Legacy Member
Eigenlijk zit je hier met overduidelijke business logic die in z'n eigen model (Javascript prototype) moet gestoken worden en waar je tests op moet schrijven, maar soit&#8230;

Moet, moet, moet, men moet just niks
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan