KOMPOOS.NL

string to number

home » manuals » javascript » string-to-number.html

sitemap


maak van (javascript) strings cijfers

Als je wat over de standaard procedures wilt lezen om van strings "getalletjes" te maken, verwijs ik je naar de grote hoeveelheid zin en onzin die daarover op het internet te vinden is.

deze pagina behandeld de meest hardnekkige problemen

Je wordt soms helemaal radeloos als een integer (getal), of een float, niet wil "werken". Als je een variabele hebt benoemd op de manier van var het_cijfer = 1; zal er absoluut niets mis (kunnen) gaan; maar stel dat je de volgende constructie hebt:

var een_door_php_gegenereerde_javascript_variabele = "<?php echo $de_php_variabele; ?>";

Dan loop je voor 99% kans om in de diepste problemen te komen. Nu kan je met parseFloat en parseInt een heel eind komen, maar als je (bijvoorbeeld) het getal 6.55 in de variabele hebt zitten (die je ergens wilt gebruiken) is het volkomen einde verhaal. Er zijn vele varianten van (soortgelijke) fouten die allemaal tot hetzelfde vervelende resultaat leiden.

daar is een standaard oplossing voor

Stel dat je een php variabele hebt met de waarde 3.55. Om die zonder problemen naar een javascript-variabele (nummeriek) om te zetten, doe je het navolgende:


   var javascript_variabele='<?php echo (100*$php_variabele); ?>';
    javascript_variabele=(parseInt(javascript_variabele,10)/100); 

Dit werkt dus altijd!
Heb je drie decimalen achter de komma, dan wordt de honderd in de procedure duizend, en wil je helemaal geen decimalen, dan kan je volstaan door een één in te vullen. Ik neem aan dat duidelijk is dat ook met uitsluitend "javascript-variabelen" de procedure werkt. Hieronder voor de zekerheid nog een voorbeeldregel die een string (met inhoud een 'getal' met 2 decimalen) probleemloos nummeriek maakt, met behoud van de twee decimalen.


javascript_variabele=(parseInt(100*javascript_variabele,10)/100); 

De meeste mensen weten het wel, maar ik wil toch nog even opmerken dat de (parameter) 10 bij parseInt aangeeft dat je het decimale stelsel gebruikt. Als je dit weglaat, kunnen jouw procedures flink gaan "spoken". Een voorlopend nulletje in een variabele, zorgt er direct voor dat er naar octaal geschakeld wordt (en als je dat even niet door hebt...).

en tot slot nog een vriendelijk woord

voor al die mensen die nog nooit dit probleem zijn tegengekomen... Als een mooi stuk javascript fantastisch werkt in jouw (strict) browser, wil dat nog niet zeggen dat andere browsers ook zo enthousiast over jouw produkt zijn... Vaak heb je nog geeneens door dat het script volkomen instabiel is (in vooral IE-browsers). Daarom kan het wel eens gebeuren dat als je een script in echt álle browsers test, je er achter komt dat jouw "geesteskind" mankementen vertoont. En de string-integer "grap" is er één die je vaak niet direct door hebt...

als je het zeker wilt weten

moet je jouw script even door JSLint "heenhalen". Elk script op de kompoos.nl is er doorheen gegaan. Daarom werken ze ook (bijna) altijd vlekkeloos.

Gebruik voor alle voorbeelden op de http://kompoos.nl een valide html5 pagina.