[JS] velden worden raar bij elkaar opgetelt
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)
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
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>");
?>
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
Via value krijg je alleen strings, en je hebt integers nodig, dus
var nieuwTot = parseInt(oudTot) + parseInt(pBedrag);
helaas, dan geeft hij NaN terug in mijn totaalveld
NaN betekent Not a Number. FF testen op m'n localhost. Wordt vervolgd als het me lukt :)
Gewijzigd op 02/01/2006 11:56:00 door Jelmer -
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
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