Avatar billede benneharli Juniormester
22. februar 2008 - 14:46 Der er 8 kommentarer og
1 løsning

6000000 til 6.000.000

Hej

Jeg skal bruge en javascript funktion der indsaetter 1000 tals separator i et tal. Tallet kan vaere alt fra 100 til 1000000000000...

Hvordan laver jeg nemmest en loop funktion der indsaetter det?
Avatar billede jokkejensen Novice
22. februar 2008 - 15:00 #1
http://www.eggheadcafe.com/articles/20031204.asp

Prøv at skrive i det første tekst felt..

Behold points hvis du kan bruge..

/JJ
Avatar billede jokkejensen Novice
22. februar 2008 - 15:02 #2
her er også noget :

<script type="text/javascript">
function f(field){
if(/^\d+$/.test(field.value))
field.value=field.value.split("").reverse().join("").
replace(/(\d{3})/g,"$1,").
replace(/,$/,"").
split("").reverse().join("");
}
</script>
<input type="text" onblur="f(this)">
Avatar billede benneharli Juniormester
22. februar 2008 - 15:04 #3
hmm... det er praecist det jeg skal bruge, men det virker lige lovlig generisk... skal bruge noget mere konkret...
Avatar billede jokkejensen Novice
22. februar 2008 - 15:25 #4
Øhmm tror ikke jeg forstår hvis ikke den sidste er okay..

Den sætter netop:
"1000 tals separator i et tal. Tallet kan vaere alt fra 100 til 1000000000000..."

Er det kommaet du ikke kan få til et punktum ?

/JJ
Avatar billede jokkejensen Novice
22. februar 2008 - 15:26 #5
<html>
<head>
<title>Varekartotek</title>

</head>
<body>
<script type="text/javascript">
function f(field){
if(/^\d+$/.test(field.value))
field.value=field.value.split("").reverse().join("").
replace(/(\d{3})/g,"$1,").
replace(/,$/,"").
split("").reverse().join("");
}
</script>
<input type="text" onblur="f(this)">
</body>
</html>
Avatar billede benneharli Juniormester
23. februar 2008 - 18:38 #6
Jeg har gjort det lidt anderledes...
---------------------------------------------------------

function signal (evt) {

text = evt.getTarget().getParentNode();
inp = +evt.getValue();
inpStr = inp.toString()
outp = "";

  for (i = 0; i <= inpStr.length; i++) {
    outp = inpStr.charAt (i) + outp;
  }

divide = parseInt(inpStr.length / 3);
remainder = inpStr.length - (divide * 3);

str = "";
chk = 0;

for (i = 0; i < divide; i++) {
    str = str + outp.substr(chk,3) +".";
    chk = chk + 3;
    last = i;
}

strLength = str.length;

if (remainder == 0) {
    outpStr = str.substr(str,strLength - 1);
} else {
    outpStr = str + outp.substr(chk,remainder);
}

present = "";

for (i = 0; i <= outpStr.length; i++) {
    present = outpStr.charAt (i) + present;
}

if (inp < 1000) {
    present = inpStr;
}

text.setAttribute("Content", present);

}
Avatar billede benneharli Juniormester
23. februar 2008 - 18:40 #7
.
Avatar billede roenving Novice
25. februar 2008 - 17:12 #8
-- men det er vel lettere at vedligeholde en kode, som er ganske kort ?-)

-- selvfølgelig kan det være et problem, hvis det ikke er en slags kode, man forstår, men f.eks.

<script type="text/javascript">
function ins1000Sep(val){
  val = val.split(",");//Sørg for at noget efter kommaet ikke kommer med
  val[0] = val[0].split("").reverse().join("");//vend talstrengen om
  val[0] = val[0].replace(/(\d{3})/g,"$1.");//Indsæt punktum efter hvert 3. tal
  val[0] = val[0].split("").reverse().join("");//vend talstrengen om igen
  val[0] = val[0].indexOf(".")==0?val[0].substring(1):val[0];//Fjern et evt. foranstillet punktum
  return val.join(",");
}
function rem1000Sep(val){
  return val.replace(/\./g,"");
}
</script>
Avatar billede benneharli Juniormester
25. februar 2008 - 23:13 #9
Hey Roenving

Helt klart, men problemet er at det ikke er til en hjemmeside. Det er til et program der bruger "javascript" til at lave animationer.

TAC Vista - bygningsstyring...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester