[Javascript/HTML] totalen weergeven

Pagina: 1
Acties:

  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
ik heb de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript" language="JavaScript">
    function SchrijfTotaal(Dag) {
    var totaal;
    //totaal = 0;
    totaal += document.form1.elements[Dag + "-Reizen_100"].value; 
    totaal += document.form1.elements[Dag + "-Reizen_125"].value;
    totaal += document.form1.elements[Dag + "-Reizen_160"].value;
    totaal += document.form1.elements[Dag + "-CoNet_100"].value;
    totaal += document.form1.elements[Dag + "-CoNet_125"].value;
    totaal += document.form1.elements[Dag + "-CoNet_160"].value;
    totaal += document.form1.elements[Dag + "-Klant_100"].value;
    totaal += document.form1.elements[Dag + "-Klant_125"].value;
    totaal += document.form1.elements[Dag + "-Klant_160"].value;
    //document.[Dag + "-totaal"].innerText = totaal;
    alert(totaal);
    }
    </script>

het oproepen van de functie gaat goed. de waardes krijg ik ook netjes. het probleem is echter dat ik eerst undefined krijg, en dan een string ipv een float. (alle invoervelden bevatten numerieke waarden).

ik heb dit ook geprobeerd met VBscript, maar toen lukte het me niet om de waarden uit de velden te halen.

gebruik ik parseFloat(); dan geeft ie een NaN, ook als ik alleen maar numerieke waarden invul.

wat doe ik precies fout?
edit:
dit is de oplossing geworden:

JavaScript:
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
45
46
47
48
49
50
51
<script type="text/javascript" language="JavaScript">
    function SchrijfTotaal(Dag) {
        var totaal;
        var temp;
        totaal = 0;
        /* horizontale kolommen */
        temp = parseFloat(document.form1.elements[Dag + "-Reizen_100"].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements[Dag + "-Reizen_125"].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements[Dag + "-Reizen_160"].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements[Dag + "-CoNet_100"].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements[Dag + "-CoNet_125"].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements[Dag + "-CoNet_160"].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements[Dag + "-Klant_100"].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements[Dag + "-Klant_125"].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements[Dag + "-Klant_160"].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        totaal = totaal.toString();
        document.getElementById(Dag + '-totaal').innerText = totaal.replace(".", ",");
        totaal = 0;
    }   
    function horizontaal(Column) {
        var totaal;
        var temp;
        totaal = 0;
        /* vertikale kolommen totalen */
        temp = parseFloat(document.form1.elements["Maandag-" + Column].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements["Dinsdag-" + Column].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements["Woensdag-" + Column].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements["Donderdag-" + Column].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements["Vrijdag-" + Column].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements["Zaterdag-" + Column].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        temp = parseFloat(document.form1.elements["Zondag-" + Column].value.replace(",", "."));
        if (!isNaN(temp)) totaal += temp;
        totaal = totaal.toString();
        document.getElementById(Column).innerText = totaal.replace(".", ",");
    }
    </script>

[ Voor 54% gewijzigd door BasSpruit op 13-01-2004 09:17 ]


Verwijderd

Er gaan een aantal dingen fout:
  • Je gebruikt += maar geen initiele waarde voor totaal.
  • Values van textboxes zijn ALTIJD strings, gebruik dus inderdaad parseFloat; wat gaat daar mis mee?
Let erop dat als er ook maar één niet-numerieke waarde tussenzit er NaN uit zal komen!

  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
ik heb nu de initiele waarde gezet op 0. ik krijg nu geen foutmeldingen meer, en geen undefined. maar bij parseFloat krijg ik nog wel een NaN.

ik geef een plaatje: Afbeeldingslocatie: http://www.conet.info/test.gif

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
je moet bij mijn weten ook ff letten op komma vs punt in je getal...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
Ik zie dus wat er nu aan de hand is. als er ook maar 1 veld leeg is, dan geeft ie een NaN. is het mogelijk om een NULL op te vangen?

[ Voor 75% gewijzigd door BasSpruit op 12-01-2004 14:52 ]


Verwijderd

JavaScript:
1
2
var fVal = parseFloat(blabla.value);
if(!isNaN(fVal)) totaal += fVal;

  • BasSpruit
  • Registratie: September 2002
  • Laatst online: 09-04-2022
Precies! daar zocht ik naar. hartstikke bedankt! nu alleen nog de kommagetallen bewerken...
Pagina: 1