[JS] velden worden raar bij elkaar opgetelt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

The Pope

The Pope

02/01/2006 11:42:00
Quote Anchor link
hallo,

ik heb hier nou een javascript, net als vorige week, maar nu gaat hij weer raar doen.

Bedoeling van het script:
ik heb een tabel, daar staan 26 velden onder elkaar in elke kolom, en als en de eerste kolom het aantal wordt veranderd, moet in de 2e kolom het bedrag ook worden aangepast.
tot zover werkt het, maar als het bedrag veranderd, moet het totaal ook automatisch veranderen, en daar gaat hij raar doen:
als ik met het script 0.14 bij 0.07 optel krijg ik dit:

0.140.07 als uitkomst in het veld totaal.

Javascript:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
function CalcBedrag(TheField, TargetField){
    var
hoeveel = document.getElementById(TheField).value;
    var
Postbedrag = Math.round((hoeveel * 0.07)*100)/100;
    document.getElementById(TargetField).value=Postbedrag;
}
function
reCalcTotaal(SourceVeld){
    var
oudTot = document.getElementById('totaal').value;
    var
pBedrag = document.getElementById(SourceVeld).value;
    var
nieuwTot = oudTot + pBedrag;
    document.getElementById('totaal').value = nieuwTot;
}

// PHP script
 for($l=1;$l<=26;$l++){
  echo("
  <tr bordercolor=\"#000066\">
    <td><select name=\"dd_"
.$l."\">");
for($d=1;$d<=31;$d++){
echo("<option value=\"".$d."\">".$d."</option>");
}

echo("
</select>
<select name=\"mm_"
.$l."\">");
for($m=1;$m<=12;$m++){
echo("<option value=\"".$m."\">".$m."</option>");
}

echo("
</select>
<select name=\"yy_"
.$l."\">
<option value=\""
.date("Y")."\">".date("Y")."</option>
</select></td>
    <td><input name=\"aantal_"
.$l."\" onKeyUp=\"CalcBedrag('aantal_".$l."', 'bedrag_pst_".$l."');reCalcTotaal('bedrag_pst_".$l."');\" type=\"text\" id=\"aantal_".$l."\" maxlength=\"4\"></td>
    <td><input name=\"bedrag_pst_"
.$l."\" type=\"text\" id=\"bedrag_pst_".$l."\" readonly=\"true\" value=\"0,00\"></td>
  </tr>"
);
  }

  echo("<tr>
    <th colspan=\"2\" align=\"right\">Aantal bezorgdagen</th>
    <td><input name=\"bezorgdagen\" type=\"text\" id=\"bezorgdagen\"></td>
  </tr>
  <tr>
    <th colspan=\"2\" align=\"right\">Totaal</th>
    <td><input name=\"totaal\" type=\"text\" id=\"totaal\"></td>
  </tr>"
);
  ?>


overigens vind ik andere sugesties ook best, zo lang het maar werkt :P
Gewijzigd op 02/01/2006 11:43:00 door The Pope
 
PHP hulp

PHP hulp

05/12/2022 23:05:53
 
Jelmer -

Jelmer -

02/01/2006 11:44:00
Quote Anchor link
var nieuwTot = oudTot + pBedrag;
Via value krijg je alleen strings, en je hebt integers nodig, dus
var nieuwTot = parseInt(oudTot) + parseInt(pBedrag);
 
The Pope

The Pope

02/01/2006 11:50:00
Quote Anchor link
helaas, dan geeft hij NaN terug in mijn totaalveld
 

02/01/2006 11:55:00
Quote Anchor link
NaN betekent Not a Number. FF testen op m'n localhost. Wordt vervolgd als het me lukt :)
 
Jelmer -

Jelmer -

02/01/2006 11:55:00
Quote Anchor link
Kan je eens nagaan welk van de beide velden NaN (not a number) teruggeeft? en wat de precieze inhoud was?
Gewijzigd op 02/01/2006 11:56:00 door Jelmer -
 
The Pope

The Pope

02/01/2006 12:00:00
Quote Anchor link
ze geven allemaal dit terug in m'n totaalveld.
en ik ze allemaal een standaar value van 0.00 gegeven.
maar dit script gaat ook niet werken vrees ik, want als ik iets wijzig moet hij alles opnieuw bij elkaar optellen.
ik gok dat ik dit dan met for moet doen, maar ik weet het niet helemaal
Gewijzigd op 02/01/2006 12:04:00 door The Pope
 
The Pope

The Pope

02/01/2006 12:50:00
Quote Anchor link
ik heb nu dit gemaakt:

function reCalcTotaal(){
var nieuwTot = 0.00;
for(i=1;i<=26;i++){
var nieuwTot += parseInt(document.getElementById('totaal').value) + parseInt(document.getElementById('bedrag_pst_'+i).value);
}
document.getElementById('totaal').value = nieuwTot;
}

maar het werkt niet, ik heb tevens die += veranderd in =+ maar dat werkt geen van beiden
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.