login  Naam:   Wachtwoord: 
Registreer je!
 Forum

JS Array berekenen (Opgelost)

Offline Ruultje - 11/02/2011 12:04
Avatar van RuultjeNieuw lid Ik (ben ik weer) heb dan toch nog één vraagje waar ik geen wijs uit kom.

Is het mogelijk om te rekenen met een array (ook vanuit input velden). Ik weet hoe ik iets kan berekenen bij een 'gewone' input. Maar bij een array lukt het mij niet.

M.a.w. bij mijn input staat bij name bijvoorbeeld:
name='testje1[]'
name='testje2[]'

Deze twee moeten dus bij elkaar worden opgeteld. Dat lukt wanneer ik zonder [] doe goed. Maar bij deze kom ik niet uit.

Het zit in ieder geval zo. Ik heb een linker- en een rechterkant. Bij die linkerkant vul ik een begin- en eindwaarde in (testje1 is beginwaarde, testje2 is eindwaarde) aan de rechterkant staan dezelfde veldjes bij deze worden ook een begin- en eindwaarde ingevuld. Het totale van die vier moet dan bij elkaar en wel zo:

Links: eindwaarde - beginwaarde;
Rechts: eindwaarde - beginwaarde;
Totaal: links + rechts.

4 antwoorden

Gesponsorde links
Offline Beirensg - 11/02/2011 14:05
Avatar van Beirensg HTML beginner Wanneer moet er iets opgeteld worden; is dit als de gebruiker op een knop drukt. En gebeurt de verwerking dan door JavaScript?

Wat voor inputs zijn het eigenlijk; ik veronderstel dat testje[] een radiobutton of checkbox is.

Kan je een beetje code plaatsen.
Offline Ruultje - 11/02/2011 14:33
Avatar van Ruultje Nieuw lid Wanneer men het veld verlaat. Het zijn gewone inputvelden (text) om in te schrijven. Men zet er een getal in.

Daarvoor worden trouwens radio buttons gebruikt. Wanneer men daar op klikt openen zich dus extra velden waarin de getallen ingevuld moeten worden. Het kan zijn dat er links en rechts iets ingevuld moet worden maar het kan ook zijn dat er alleen links of alleen rechts iets hoeft worden ingevuld. Dat ligt dus aan de radiobutton die aangeklikt is. Hopelijk is de bedoeling een beetje duidelijk.

De cijfers worden daarna naar eend database geschreven waarna ik via php de berekening maak. Maar in deze wil ik die direct in het formulier terugzien. Zodat men de uitkomst meteen ziet staan bij het invullen van het formulier. Het liefst wil ik dit geheel trouwens gaan maken in jQuery/Ajax maar daar moet ik toch nog meer van leren.

Dit is wat ik heb

  1. function checkUitkomst()
  2. {
  3.  
  4. var beg = myForm.elements["begin[]"].value;
  5. var ein = myForm.elements["eind[]"].value;
  6.  
  7. var totaal = parseInt(ein) - parseInt(beg);
  8.  
  9. document.getElementById('div_test').innerHTML = "Totaal: " + totaal +";
  10.  
  11. }


Deze staan dan in een verborgen div na het aanklikken van een radio button.
  1. <input type="text" name="begin[]" class='inputveld'>
  2. <input type="text" name="eind[]" class='inputveld' onchange="checkUitkomst()">
Offline Beirensg - 11/02/2011 14:52
Avatar van Beirensg HTML beginner Ik ben niet heel zeker waarom je de naam van een textbox als array wilt wegschrijven, Heeft dit een reden; want er is toch maar 1 element in deze array. En zo wordt het iets moeilijker om de value terug te halen.

Maar niets is natuurlijk onmogelijk. Ik heb je code een beetje herschreven naar JQuery, vind ik veel gemakkelijker en duidelijker:
  1. <input type="text" name="begin[]" class='inputveld'>
  2. <input type="text" name="eind[]" class='inputveld' >
  3. <div id="div_test" style="border:solid 1px black;height:50px;width:100%">
  4. </div>


  1. $("input[name='eind[]']").change(function(){
  2.  
  3. var beg = $("input[name='begin[]']").val();
  4. var ein = $("input[name='eind[]']").val();
  5.  
  6. var totaal = parseInt(ein) - parseInt(beg);
  7.  
  8. $('div#div_test').text( "Totaal: " + totaal);
  9.  
  10. });


Ik heb dit snel getest mbhv jsfiddle (http://jsfiddle.net/beirensg/mWXb6/). Je kan dit dan ook even bekijken en snel testen.
BTW een uitstekende site om snel een klein beetje code te testen 
Offline Ruultje - 11/02/2011 15:38 (laatste wijziging 15/02/2011 08:52)
Avatar van Ruultje Nieuw lid Ja kan zijn dat er drie textboxjes zijn bij een radio button. DUs drie keer eentje met 'begin' en drie keer eentje met 'eind'. Vandaar.

Deze werkt in ieder geval. Is het wel mogelijk om hier ook de 'live' functie bij te zetten. Want merk dat ik bij het laden in een andere div (zie laatste probleem) weer niks zie.

Site ga ik opslaan. Lijkt mij wel makkelijk. Ipv telkens eigen testpagina aan te maken om te kijken of het werkt ;)

jQuery is inderdaad mooier. Ga in het weekend (als ik er tijd voor krijg) alles bekijken zodat ik deze stuff ga snappen.

Heb dit er bij gezet.

  1. .live('change',function(){



En dat werkt ;)

Wederom bedankt (hopelijk was dit voorlopig mijn laatste 'probleem').


Toch een vraagje.... Wanneer ik dit heb werkt het niet. Hoe kan ik dit verder voor elkaar krijgen?

<input type="text" name="begin[]" class='inputveld'>
<input type="text" name="eind[]" class='inputveld' >
<input type="text" name="begin[]" class='inputveld'>
<input type="text" name="eind[]" class='inputveld' >
<div id="div_test" style="border:solid 1px black;height:50px;width:100%">
</div>

Zo ziet het dan uit in de broncode. Op de één of andere manier met ID's werken?

Hij schrijft wel de juiste data naar de database. Ga er daarom vanuit dat er wel een mogelijkheid is dat hij ook vier textboxen kan berekenen.

Dus begin bij elkaar optellen en die twee van eind. En dan eind - begin.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.2s