Du kan ikke gøre det helt automatisk for alle tal generelt. du kan dog lave en generel funktion, der konverterer alle reelle tal og heltal til "danske" komma-tal:
Math.convertToKroner = function(tal) { var integer = Math.floor(tal); var decimals = Math.round((tal-integer)*100)/100; var twoDecimals = (decimals+0.00001).toString().substring(2,4); return integer+","+twoDecimals; } trace(Math.convertToKroner(4.5)); trace(Math.convertToKroner(45)); trace(Math.convertToKroner(4.347)); trace(Math.convertToKroner(4.50001));
Når du bruger conditional ?:, så SKAL der mellemrum før ":" (hvis det er et variabelnavn før) - ellers tror flash det er et objekt-initialisering, altså:
var s1 = fjollet?t:p; // fejler var s2 = fjollet?t :p; // ok
Derfor fejlen i din oprindelige funktion. En anden langt større fejl er dit scope. Din funktion "millpoint" er defineret på den sti, hvor scriptet skrives, mens funktionen på Math-objektet er global. Det vil betyde, at hvis man anvender Math.convertToKroner() på en anden tidslinie, så vil millPoint() ikke eksistere og heltals-delen af tallet forsvinder.
Her er mit bud udvidet med tusindtals-separator:
Math.convertToKroner = function(tal) { var integer = Math.floor(tal).toString(); var decimals = Math.round((tal-integer)*100)/100; var twoDecimals = (decimals+0.0001).toString().substring(2,4); var i = integer.length; var j = -1, thousands = ""; while((i-=3) > 0) { thousands = (i > 0 ? "." : "")+integer.substring(i,i+3)+thousands; } return integer.substring(0,i+3)+thousands+","+twoDecimals; }
Doooohhhh ....... naturligvis! Ja, nu er der jo pludselig mange steder, tingene kan befinde sig. Det tager zq nok lige lidt tid, før det kommer rigtig ind i rutinen :)
Tak, for rettelsen af if/else'en. Det er én af den slags ting, man skal vide. Det undrede mig da også, Flash ikke kunne håndtere den slags short-hands ;o) /mvh
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.