Hoi,

Ik heb met Javascript de volgende 2 functies:

function verzendkosten()
{
  var div = document.getElementById("verzendkosten");
  var aantal = document.bestel.aantal.value;
  var verzend = 0;
  var kosten = 8;
  var perdoos = 10;
  
  var delen = aantal/perdoos;
  delen = Math.ceil(delen);
  
  var verzend = delen*kosten;
  div.innerHTML = verzend;  
}
function bereken()
{
  var div = document.getElementById("totaal");
  var aantal = document.bestel.aantal.value;
  if(isNaN(aantal))
  {
  	div.innerHTML = "Het aantal mag alleen cijfers bevatten.".fontcolor("#de2322");
	document.bestel.button.disabled=true;	
  }
  else
  {
    if(aantal > 0 && aantal < 25)
	{
  	  var prijs = 12.50;
	}
    else if(aantal > 24 && aantal < 50)
	{
  	  var prijs = 11.00;
	}	
    else if(aantal > 49 && aantal < 200)
	{
  	  var prijs = 9.50;
	}	
    else if(aantal > 199 && aantal < 300)
	{
  	  var prijs = 8.50;
	}	
    else if(aantal > 299 && aantal < 500)
	{
  	  var prijs = 7.50;
	}	
    else if(aantal > 499)
	{
  	  var prijs = 6.50;
	}					
	else
	{
	  var prijs = 0;
	}
    var subtotaal = (aantal * prijs);	
  	div.innerHTML = "&euro; "+subtotaal;
	document.bestel.button.disabled=false;		
  }
}


Nu wil ik bij de subtotaal in bereken() de verzend van verzendkosten() optellen. Hoe doe ik dit? En hoe rond ik subtotaal af op 2 decimaal?
Hoi roel,

Een functie kan altijd wat terugsturen. Wat je moet doen is als volgt:
Je voegt een regel toe waar je 'verzend' terugstuurt en je laat de functie niets anders doen dan dat (dus niet innerHTML veranderen zoals je nu doet)
Je krijg dan zoiets:

function verzendkosten()
{
  var aantal = document.bestel.aantal.value;
  var verzend = 0;
  var kosten = 8;
  var perdoos = 10;
  
  var delen = aantal/perdoos;
  delen = Math.ceil(delen);
  
  var verzend = delen*kosten;
  return verzend;  
}


Verder kun je dat op deze manier ophalen:

function bereken()
{
  var div = document.getElementById("totaal");
  var aantal = document.bestel.aantal.value;
  if(isNaN(aantal))
  {
      div.innerHTML = "Het aantal mag alleen cijfers bevatten.".fontcolor("#de2322");
    document.bestel.button.disabled=true;    
  }
  else
  {
    if(aantal > 0 && aantal < 25)
    {
        var prijs = 12.50;
    }
    else if(aantal > 24 && aantal < 50)
    {
        var prijs = 11.00;
    }    
    else if(aantal > 49 && aantal < 200)
    {
        var prijs = 9.50;
    }    
    else if(aantal > 199 && aantal < 300)
    {
        var prijs = 8.50;
    }    
    else if(aantal > 299 && aantal < 500)
    {
        var prijs = 7.50;
    }    
    else if(aantal > 499)
    {
        var prijs = 6.50;
    }                    
    else
    {
      var prijs = 0;
    }
    var subtotaal = (aantal * prijs);    
    
    totaal = verzendkosten() + subtotaal;
    div.innerHTML = "&euro; "+totaal;
    
    var div = document.getElementById("verzendkosten");
    div.innerHTML = verzendkosten();
    
    document.bestel.button.disabled=false;        
  }
}


Is dit wat je wil?
het werkt, bedankt!

Ik heb nu nog 1 vraagje: hoe rond ik af op 2 decimaal. Op google kon ik niet echt iets vindne.
Ik zal wel te laat zijn:


var num = 12;
alert(num.toFixed(2)); // geeft 12.00


Je kunt van de punt een komma maken met .replace:


var num = 12;
var numFixed = num.toFixed(2);
alert(numFixed.replace('.',','));

Reageren