Toon posts:

[javascript] wil optellen, niet toevoegen

Pagina: 1
Acties:
  • 516 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
alweer een domme vraag (sorry cheetah...heb ook dit keer echt weer gezocht, op rekenen, optellen, etc. maar niets gevonden)

ik wil in m'n functie de waardes uit het formulier optellen, maar dat wil niet. In plaats van optellen zet hij de waardes gewoon achter elkaar (12 + 3 wordt 123). Het gekke is, als ik een minteken gebruik ipv plus dan trekt ie het wel netjes van elkaar af (en krijg ik 9).

Ik heb ook al ff bij de javascriptsource naar die calculaters gekeken en die gebruiken nog wel een parseInt of eval. Maar als ik dat er voor zet,
bijv zo:
maandag = eval(document.forms['myform'].elements['maandag[uren]'].value);
dan krijg ik als uitkomst NaN

wat doe ik fout?

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

uit formelements krijg je strings terug, die moet je dus idd parsen.
parseInt( string ) voor ints (hele getallen)
parseFloat( string ) als je getallen achter de komma wilt.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Simpel
Is toch wel erg simpel

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 09:22

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

XLerator schreef op 15 augustus 2002 @ 17:38:
Simpel
Is toch wel erg simpel
Gelukkig maar dat deze reply zoveel toevoegt heh :?

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Verwijderd

Topicstarter
ok, dat parseInt/parseFloat verhaal had ik dus al geprobeerd maar dan krijg ik dus een NaN terug als waarde.
Dit is m'n functie:

code:
1
2
3
4
5
6
7
8
9
10
11
12
function calculate_uren()
{
    maandag     = parseFloat(document.forms['myform'].elements['maandag[uren]'].value);
    dinsdag     = parseFloat(document.forms['myform'].elements['dinsdag[uren]'].value);
    woensdag    = parseFloat(document.forms['myform'].elements['woensdag[uren]'].value);
    donderdag   = parseFloat(document.forms['myform'].elements['donderdag[uren]'].value);
    vrijdag     = parseFloat(document.forms['myform'].elements['vrijdag[uren]'].value);
    zaterdag    = parseFloat(document.forms['myform'].elements['zaterdag[uren]'].value);
    zondag      = parseFloat(document.forms['myform'].elements['zondag[uren]'].value);
    document.myform.totaal_uren.value = maandag + dinsdag + woensdag + donderdag + vrijdag + zaterdag + zondag;

}

Verwijderd

Gebruik je niet toevallig een ander form element dan de input box? Aangezien deze een andere aanroep vereisen.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Smerige truuk:
code:
1
document.myform.totaal_uren.value = - ( - maandag - dinsdag - woensdag - donderdag - vrijdag - zaterdag - zondag );

Geen parseInt of parseFloat nodig :)

Die NaN; staan er komma's in je getallen?

Intentionally left blank


Verwijderd

Topicstarter
Verwijderd schreef op 15 augustus 2002 @ 17:58:
Gebruik je niet toevallig een ander form element dan de input box? Aangezien deze een andere aanroep vereisen.
Nopes, het zijn allemaal <input type="text"> boxen
crisp schreef op 15 augustus 2002 @ 18:01:
Smerige truuk:
code:
1
document.myform.totaal_uren.value = - ( - maandag - dinsdag - woensdag - donderdag - vrijdag - zaterdag - zondag );

Geen parseInt of parseFloat nodig :)
Hmm...tja, het doel heiligt de middelen zeggen ze wel eens. Maar eigenlijk wil ik ook gewoon weten waarom het fout gaat, anders leer ik er geen snars van.
Die NaN; staan er komma's in je getallen?
Nee, heb voor de veiligheid telkens getest met hele getallen. Maar het zou toch moeten mogen (komma's) met een parseFloat?

Verwijderd

Topicstarter
hier een heel klein stukje code wat in een html file gepaste kan worden:
code:
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
<html>

<head>
 <script language = "javascript" type="text/javascript">
 <!--
 function calculate_uren()
 {
    maandag     = parseFloat(document.forms['myform'].elements['maandag[uren]'].value);
    dinsdag     = parseFloat(document.forms['myform'].elements['dinsdag[uren]'].value);
    woensdag    = parseFloat(document.forms['myform'].elements['woensdag[uren]'].value);
    donderdag   = parseFloat(document.forms['myform'].elements['donderdag[uren]'].value);
    vrijdag     = parseFloat(document.forms['myform'].elements['vrijdag[uren]'].value);
    zaterdag    = parseFloat(document.forms['myform'].elements['zaterdag[uren]'].value);
    zondag      = parseFloat(document.forms['myform'].elements['zondag[uren]'].value);
    document.myform.totaal_uren.value = maandag + dinsdag + woensdag + donderdag + vrijdag + zaterdag + zondag;

 }
 //  End -->
 </script>
</head>

<body>

<form name="myform">
<input type="text" name="maandag[uren]" size="3"><br>
<input type="text" name="dinsdag[uren]" size="3"><br>
<input type="text" name="woensdag[uren]" size="3"><br>
<input type="text" name="donderdag[uren]" size="3"><br>
<input type="text" name="vrijdag[uren]" size="3"><br>
<input type="text" name="zaterdag[uren]" size="3"><br>
<input type="text" name="zondag[uren]" size="3"><br><br>
<input type="text" name="totaal_uren" size="5"> <a href="javascript:calculate_uren();"><<</a>
</form>

</body>
</html>


Als iemand me kan vertellen waarom dat mis gaat: graag! dan heb ik weer wat geleerd

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

uhm, hier werkt ie zoals het hoort... IE5/W2k

www.jurgroessen.nl


Verwijderd

Topicstarter
godverdegodver.....hoe kan het dan dat het bij mij niet werkt? ik heb precies hetzelfde!
ook IE5 (5.00) en W2kut
ik krijg NaN bij de totaal_uren

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Verwijderd schreef op 15 augustus 2002 @ 18:10:
... Maar het zou toch moeten mogen (komma's) met een parseFloat?
nope, alleen puntje.

/edit: tenminste als je de decimal part ook mee wil nemen in de berekening

Today's subliminal thought is:


Verwijderd

Topicstarter
Annie schreef op 15 augustus 2002 @ 18:39:
[...]
nope, alleen puntje.
ohw ok.
maargoed, daar test ik het nog geeneens mee. zelfs met hele getallen krijg ik die :r NaN
:( :( :(

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

gaat dat ding soms over de zeik van de naam van je input: maandag[uren]?
het lijkt nu namelijk dat uren een array-element is van maandag...

www.jurgroessen.nl


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Hangloozz schreef op 15 augustus 2002 @ 21:12:
gaat dat ding soms over de zeik van de naam van je input: maandag[uren]?
het lijkt nu namelijk dat uren een array-element is van maandag...
Dat zou het wel eens kunnen zijn; ik heb echter hier geen IE5.0 om het te kunnen testen...

Intentionally left blank


  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Voor het geval iemand het nog niet weet: NaN = Not A Number

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

XLerator schreef op 15 augustus 2002 @ 23:00:
Voor het geval iemand het nog niet weet: NaN = Not A Number
joh ;)

/back-ontopic:
Anyway, kan het bij gebrek aan ie5.0 hier ook niet uitproberen (ie6 werkt als een zonnetje), zal morgen wel eens kijken op een testmachine.
Misschien kan je even voor elk van de veld.values de isNaN() weg kunnen schrijven naar het scherm, misschien dat daar iets raars uitkomt.

Today's subliminal thought is:


Verwijderd

Topicstarter
ik ben ergens achter gekomen: als ik alle velden invoer gaat het prima. echter, als ik een veld leeg laat krijg ik NaN. Hij gaat dus over z'n nek van een lege waarde.
Ik ben niet zo'n held met javascript (zoals jullie waarschijnlijk reeds weten), kan iemand me vertellen hoe dit op te lossen (en me misschien ook de logica (als die al in javascript zit) ervan uitleggen)

  • Hangloozz
  • Registratie: Juli 1999
  • Laatst online: 13-07 17:24

Hangloozz

{ @$%&# }

ja dat is met een hele moeilijke javascriptconstructie te doen :P
<input type="text" name="maandag[uren]" value="0" size="3">
maar dat zal je wel niet willen :{

www.jurgroessen.nl


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Het beste lijkt me om na het toewijzen van elke waarde, de waarde te checken op NaN, en hem op 0 te zetten als het niet numeriek is:
code:
1
2
maandag = parseFloat(document.forms['myform'].elements['maandag[uren]'].value);
if (isNaN(maandag)) maandag = 0;

Intentionally left blank

Pagina: 1