Rekenen met javascript

Status
Niet open voor verdere reacties.

jacobboersma

Gebruiker
Lid geworden
11 sep 2007
Berichten
428
Ik probeer met de data uit een veld realtime een berekening te maken in javascript. De bedoeling is: data uit veld formulier X 12,5 = prijs.

Ik heb nu dit.

Javascript:
Code:
function checkAalw(elem) {
    var b = elem.value;   
    var total = 0;
    b = removeDots( b );
    var j = b.length;
    for( var i = 0; i < b.length; i++ ) {
        total += b.charAt( i ) * j;
        j -= 1;
    }
	if( b.length < 1)
{
   alert('U dient een aantal op te geven bij lange route wandelaars! Dit mag ook gewoon 0 zijn.');
 elem.style.backgroundColor = '#c33';   
    }else{
       elem.style.backgroundColor = '#3c3';   
   }
}
function berLW()
        {
          var getal = document.getElementById('Aantal_L_W').value;
          document.getElementById('prijslw').innerHTML = "&euro;" + Math.round(getal * 12.5);
                 }

Veld:
HTML:
<label2 for="Aantal_L_W">Aantal kaarten lange route wandelaars (35 km):</label2><BR><input name="Aantal_L_W" type="text" id="" VALUE="0" size="2" maxlength="2" class="grayborder" onblur="checkAalw(this);" onblur="berLW(this);">&nbsp;<font color="red">*</font>Prijs: <b id="prijslw">&euro;</b><br>
 
Laatst bewerkt:
Je hebt niet aangegeven wat er fout gaat of niet werkt, en dit had je beter in het Javascript gedeelte kunnen zetten ;)

Ik vermoed dat het probleem weleens kan zijn dat informatie uit een tekst-veld een stuk tekst is, en geen getal, en dat je nog gebruik moet maken van de functie parseInt() voordat javascript er mee kan rekenen.
 
Zou je dit een beetje kunnen uitleggen? Ik heb namelijk nog nooit gehoord van parseInt(). Na wat gegoogle kwam ik er achter dat het van komma getallen gewone getallen maakt. Maar hoe kan ik dit dan integreren in mijn script?
 
Het maakt van teksten getallen. Wat je moet doen is, voordat je werkt met de inhoud van een tekstveld, de inhoud van dat tekstveld door de parseInt functie halen (met 10 als tweede argument, tenzij je geen 10-tallige getallen verwacht)

Code:
// voordat je de value van elem gebruikt, eerst de tekst omzetten in een getal.
var b = parseInt( elem.value, 10 );
 
Hoi,


Je hebt 2x een onblur() in je HTML staan. Zie hieronder voor een 'beter' idee met event handlers.

Daarnaast gebruik je een rare functie om de waarde uit het veld te halen. Gebruikte je deze functie niet voor rekeningnummers oid? Zie hieronder voor een voorbeeld.

HTML:
<input type='text' id='aantalbeesjes' />

<span id='output'>&eur; 0</span>
[JS]var elem = document.getElementById('aantalbeesjes');
var out = document.getElementById('output');

if(elem.addEventListener)
{
elem.addEventListener('blur', calc, false); // normale browsers
}else{
elem.attachEvent('onblur', calc); // IE
}


function calc()
{
var geld, aantal, invoer = elem.value; // variabelen geld en aantal zijn leeg.
// invoer bevat een String met daarin een getal.

// zoals Frats al zei, parse het als getal
aantal = parseInt(invoer, 10); // nu hebben we het getal

if(isNaN(aantal))
{
// gebruiker heeft geen getal ingevoerd! (isNaN = isNotANumber)
out.innerHTML = 'ERROR: wel een getal invoeren he!';
}else{
geld = aantal * 12.5;
out.innerHTML = '&euro; ' + geld;
}
}[/JS]
:thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan