Toon posts:

Javascript de nul weg

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een javascript gemaakt zodra je een checkbox aanvinkt komt de prijs in een textvak te staan
als je er meer aanklikt telt de prijs op
nu is er een probleem het bedrag moet zijn bijv 5.313,35 ipv 5.313,350.
maar er komt achter elk getal automatisch een 0 ik heb al proberen op te zoeken hoe dat komt volgens mij heeft het iets met floating points te maken ofzo? ik heb niet zoveel verstand van javascript maar ik moet dit wel afmaken want het is voor mijn werk.

Hoop dat iemand kan helpen

een stukje script
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
        if (form.arrangement1.checked && form.optioneel2.checked == true){ totaal=('5.176.50') } 
        if (form.arrangement1.checked && form.optioneel1.checked == true){ totaal=('5.313,35') }
        if (form.arrangement2.checked && form.optioneel2.checked == true){ totaal=('3.149,93') } 
        if (form.arrangement2.checked && form.optioneel1.checked == true){ totaal=('3.286,78') }
        
        totaal+=aantal 
        totaal+="" 
        punt=totaal.indexOf(".") 
        if (punt==-1) { 
                totaal += "" 
        } else { 
                lengte=totaal.length 
                centen=totaal.substr(punt+1,lengte) 
                totaal=totaal.substr(0,punt) 
                totaal+="." 
                if (centen.length==1) { 
                        centen+="" 
                } 
                totaal+=centen }
                if (punt==-1) { 
                totaal += "" 
                }
        form.totaalbedragbtw.value=totaal 
}

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
dit is puur rekenen.
blijkbaar denkt javascript dat het een getal is (hoewel er quotes omheen staan)
doordat er een rekenkundige . staat, is alles wat er achter staat < 1.
zodoende is 0.5 hetzelfde als 0.50. en laat ie de 0 weg.
de vraag is waarom je bij je eerste getal 2x een punt gebruikt, en bij de laatste 3 een punt als duizendscheiding, en een komma als < 1 ding.

(darn hoe heten dit soort tekens officieel eigenlijk ;))

This message was sent on 100% recyclable electrons.


Verwijderd

Topicstarter
BasieP schreef op donderdag 10 november 2005 @ 17:48:
dit is puur rekenen.
blijkbaar denkt javascript dat het een getal is (hoewel er quotes omheen staan)
doordat er een rekenkundige . staat, is alles wat er achter staat < 1.
zodoende is 0.5 hetzelfde als 0.50. en laat ie de 0 weg.
de vraag is waarom je bij je eerste getal 2x een punt gebruikt, en bij de laatste 3 een punt als duizendscheiding, en een komma als < 1 ding.

(darn hoe heten dit soort tekens officieel eigenlijk ;))
Die punt in de eerste is een foutjes :o :+ de punt scheid de duizenden en de komma de centen
Als ik 0.50. erachter zet word het 5.176.0.50. maar het moet worden
5.176,50

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:26

crisp

Devver

Pixelated

In JS is de . het decimaalteken. Verder moet je bij optellingen getallen gebruiken en geen strings (dan krijg je concattenatie).
Waarden verkregen uit je form zijn overigens altijd strings. Javascript heeft hele mooie methods zoals parseInt en parseFloat om daar getallen van te maken.

[ Voor 40% gewijzigd door crisp op 10-11-2005 18:03 ]

Intentionally left blank


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
waarom zet je dan in godesnaam 0.50 er achter? dat slaat helemaal nergens op..

'5.176,50' moet gewoon werken.. en anders moet je zoeken naar een 'afrond' functie die zegmaar een aantal cijfers achter de komma weer gaat geven.

als deze er niet is kan je hem ook gewoon zelf maken

@crisp, volgens mij is concattentatie juist de bedoeling van de TS

[ Voor 15% gewijzigd door BasieP op 10-11-2005 18:04 ]

This message was sent on 100% recyclable electrons.


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

BasieP schreef op donderdag 10 november 2005 @ 18:03:
@crisp, volgens mij is concattentatie juist de bedoeling van de TS
Volgens mij moet je iets beter lezen wat TS wilt. Die wilt niks anders dan een aantal dingen optellen (en doet dat vervolgens onnodeloos ingewikkeld)

[ Voor 31% gewijzigd door BtM909 op 10-11-2005 18:05 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

ik gebruik dit voor de centjes:

JavaScript:
1
2
3
4
function cent(amount) {
    amount -= 0;
    return (amount == Math.floor(amount)) ? amount + '.00' : (  (amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
}

en dat werkt tadeloos (maar niet met strings uiteraard), die comma voor de duizendtallen kun je er achteraf in gooien.

[ Voor 19% gewijzigd door Verwijderd op 10-11-2005 18:25 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:26

crisp

Devver

Pixelated

toFixed ?

duizendtal-seperator moet je dan inderdaad nog zelf fixen, maar is met wat prototyping ook wel eenvoudig te doen. toFixed wordt overigens ook niet door oudere (IE)browsers ondersteund...

[ Voor 92% gewijzigd door crisp op 10-11-2005 18:25 ]

Intentionally left blank


Verwijderd

Topicstarter
Verwijderd schreef op donderdag 10 november 2005 @ 18:23:
ik gebruik dit voor de centjes:

JavaScript:
1
2
3
4
function cent(amount) {
    amount -= 0;
    return (amount == Math.floor(amount)) ? amount + '.00' : (  (amount*10 == Math.floor(amount*10)) ? amount + '0' : amount);
}

en dat werkt tadeloos (maar niet met strings uiteraard), die comma voor de duizendtallen kun je er achteraf in gooien.
Thnx werkte prima _/-\o_ top!

[ Voor 7% gewijzigd door Verwijderd op 11-11-2005 18:03 ]


  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 16-04 22:33
@bakman,
waarom doe je
code:
1
amount -= 0;

?

Als je hiermee een cast naar een integer wilt afdwingen kun je net zo goed parseInt() of dergelijke functies gebruiken, dit staat nogal dubieus.

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337

Pagina: 1