Morten Snedker <morten.snedker@planprojekt.dk> writes:
> Nu er java og javascript jo ikke det samme, men jeg tror nok det er
> her:
Næppe. Jeg crossposter og sætter followup-to til
dk.edb.internet.webdesign.clientside, som er gruppen for Javascript.
> Kan et lyst hoved fortælle mig, hvorfor jeg får returneret
> 100.050,00
> i stedet for
> 1.000,50
Jeg får 1.000,50 i Opera 9, IE 7 og Firefox 1.5 når jeg kalder
fNr(1000.5). Hvilken browser bruger du? Hvilket argument kalder du med?
Hvis du skriver fNr("1000,50"), eller har læst den streng ind fra et
inputfelt eller lignende, så giver det det resultat du siger.
Det er fordi først fjernes ","'er (sandsynligvis fordi scriptet
er beregnet til amerikanere, som kunne skrive "$1,000.50" som input).
Altså formatterer den tallet "100050", som netop skal skrive som
"100.050,00".
> function fNr(num) {
> num = num.toString().replace(/\$|\,/g,'');
Ret til:
num = num.toString().replace(/\$|\./g,'');
(altså "." i stedet for ","). Så gør den nok hvad du ønsker.
> if(isNaN(num)) num = "0";
> sign = (num == (num = Math.abs(num)));
Grimt. Meget. Det er meget mere læseligt at skrive det ud:
var sign = (num >= 0);
num = Math.abs(num);
Husk at erklære lokale variable med "var" foran, ellers bliver
de globale, og det er nemt noget rod.
> num = Math.floor(num*100+0.50000000001);
burde nok bare være
num = Math.round(num * 100);
> cents = num%100;
var cents = num % 100;
også et godt tegn på at det er et udenlandsk script. :)
> Hvis nogen har noget smartere, så er det også bare fjong!
Det afhænger af
> -----
>
> Og: kan jeg måske også få en forklaring på, hvordan replace() i første
> linie skal læses?
streng.replace(/\$|\,/g,'')
Udskift de dele af strengen der matcher det regluære udtryk /\$|\,/g
med den tomme streng (men så langt var du nok nået :).
Det regulære udtryk læses som
/.../g - afgrænser det regulære udtryk, lige som "..." gør for strenge
- g'et betyder at det kan matche mere end en gang.
\$ - matcher et "$"-tegn, "$" betyder noget i regulære udtryk,
men det er undertrykt af at der står en backslash foran.
\, - matcher et ","-tegn.
\$|\, - matcher enten et "$"- eller et ","-tegn.
Altså, match alle "$"- og ","-tegn i strengen og lav dem om til den
tomme streng (= fjern dem).
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'