/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Hjælp til script
Fra : Morten Snedker


Dato : 30-11-06 16:28

Hej folkens,

Nu er java og javascript jo ikke det samme, men jeg tror nok det er
her:

I og med jeg nu er kommet i gang med asp.net, er jeg ufrivilligt
blevet kastet ud i javscript.

Kan et lyst hoved fortælle mig, hvorfor jeg får returneret
   100.050,00
i stedet for
   1.000,50
når jeg benytter:


function fNr(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num)) num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+'.'+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + num + ',' + cents);
}

, og endnu bedre: måske kan fortælle hvor jeg skal pille, for at få
det ønskede resultat?

Det bliver benyttet til at returnere et tal formateret med
tusindtals-separator og 2 decimaler.

Hvis nogen har noget smartere, så er det også bare fjong!

-----

Og: kan jeg måske også få en forklaring på, hvordan replace() i første
linie skal læses?

mvh en javascript-newbie
--
Morten Snedker
http://www.planprojekt.dk | http://www.dbconsult.dk
Privat: http://www.vinthervej2.dk

 
 
Thorbjørn Ravn Ander~ (30-11-2006)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 30-11-06 18:01

Morten Snedker <morten.snedker@planprojekt.dk> writes:

> Kan et lyst hoved fortælle mig, hvorfor jeg får returneret
>    100.050,00
> i stedet for
>    1.000,50
> når jeg benytter:
>
>
> function fNr(num) {
> num = num.toString().replace(/\$|\,/g,'');

Mon ikke den her replace guffer kommaer og dollartegn?
--
Thorbjørn Ravn Andersen

Morten Snedker (30-11-2006)
Kommentar
Fra : Morten Snedker


Dato : 30-11-06 20:13

On 30 Nov 2006 18:01:13 +0100, nospam0000@gmail.com (Thorbjørn Ravn
Andersen) wrote:


>> function fNr(num) {
>> num = num.toString().replace(/\$|\,/g,'');
>
>Mon ikke den her replace guffer kommaer og dollartegn?

Jow, men mon det er det første eller andet?

Jeg kan naturligvis prøve mig frem, men det var også lidt derfor jeg
bad om lidt hjælp til at læse/tolke det - evt. et link?


mvh
--
Morten Snedker
http://www.planprojekt.dk | http://www.dbconsult.dk
Privat: http://www.vinthervej2.dk

Johnnie Hougaard Nie~ (30-11-2006)
Kommentar
Fra : Johnnie Hougaard Nie~


Dato : 30-11-06 21:27

Morten Snedker wrote:
> Jow, men mon det er det første eller andet?

Ingen af delene, gætter jeg på.....

Den rigtige gruppe til JavaScript er: dk.edb.internet.webdesign.clientside

Lasse Reichstein Nie~ (05-12-2006)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 05-12-06 21:14

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.'

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste