04. september 2005 - 15:28Der er
9 kommentarer og 1 løsning
Indsæt punktum hvis string over 5 bogstaver
Hej alle,
Jeg sidder her og laver et "bestillings-system". Når man "checker" et produkt af bliver prisen tilføjet til "total-prisen". Men hvis "total-prisen" er over 5 tal (altså titusende) skal den indsætte et punktum, så prisen går fra xxxxx til xx.xxx - hvis i forstår? :)
Kunne sagtens lave det i PHP, man da jeg ikke er 100% inde i JavaScript, håber jeg ik ma hjælpe mig :)
Her er en funktion, der gerne skulle tage (uendelige?) store beløb:
function seperatePrice(input) {
// nogle variabler der skal bruges: var tmp = input + ""; // tmp er bare en streng, der indeholder midlertidige data var output = ""; // output er en streng, der kommer til at indeholde outputet
// Denne loop læser INPUT bagfra, dvs rækkefølgen bliver omvendt for (i=0; i < tmp.length+1; i++) // kør loopen fra 0 og til længden af INPUT, plus 1 { output = output + tmp.substr(tmp.length-i,1); // hent det sidste tegn fra INPUT if (i % 3 == 0 && i != tmp.length) { // hvis det er tredje tegn, og vi ikke er noget slutningen output = output + "."; // indsæt "." } }
// Sæt i den rigtige rækkefølge igen: tmp = output; output = ""; tmp = tmp.substring(1); // hent fra tegn 2, da tegn 1 = "." for (i=0; i<tmp.length+1;i++){ output = output + tmp.substr(tmp.length-i,1); // hent det sidste tegn fra TMP }
return output; // returner værdien }
Du skriver f.eks. bare seperatePrice(1234567890) eller f.eks. seperatePrice(12345678901234567890)..
- og ellers fandt jeg dette script blandt mine gamle 'doodlerier'. Det er måske lidt mere fleksibelt:
<script type="text/JavaScript"> function formNumb(num, us_da, numDec) { // Use 'da' or 'us' for formatting // numDec sets number of decimals var dec,decDel,milDel; num = num.split("."); if (!numDec) numDec = 2; dec = (num[1])? num[1] : ""; decDel = (us_da=="da")? "," : "."; milDel = (us_da=="da")? "." : ","; for ( var t="",num=num[0],i=num.length-3; num.length>0; i-=3 ) { t = num.substr( i ) + ((t!="")? milDel : "") + t; num = num.substr( 0, i ); } dec = (dec.length>numDec)? (parseInt(dec.charAt(numDec))>=5)? (parseInt(dec.substr(0,numDec))+1)+"" : dec.substr(0,numDec) : dec; while (dec.length<numDec) dec += "0"; return t + decDel + dec; } </script>
Formaterer et tal på formen: 123456.25 til enten:<br> [da]: 123.456,25<br> eller:<br> [us]: 123,456.25
mange fine scripts. Men gider ikke rigtig ændre scriptet nu, da jeg ved prisen ikke kan blive højere end 5 cifret, men altid rart med input, hvis jeg skal bruge en mere fleksibel funktion i fremtiden. Tak til alle :)
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.