Avatar billede nemlig Professor
25. oktober 2009 - 00:03 Der er 2 kommentarer og
1 løsning

Tilretning af adder-funktion

Hejsa.
Denne funktion lægger 3 dansk-formaterede tal sammen og afleverer dem som et dansk-formateret tal med 2 decimaler og tusindtalsseperator.
Jeg kunne godt tænke mig en tilretning, så der stadig lægges sammen, men koden skal aflevere et tal uden tusindtalsseperator og kun 1 decimal.

function adder(){
    var a
    var tal=0
    var len=arguments.length
    for(a=0;a<len;a++){
        if(typeof(arguments[a])=="string"){
            tal+=100*arguments[a].replace(/\./g,"").replace(/\,/g,".")
        }
        else{
            tal+=100*arguments[a]
        }
    }
    tal=""+Math.floor(tal)
    if(tal=="NaN"){
        tal="000"
        //return null //fjern udkommentering for at returnere null i tilfælde af ugyldigt input
    }
    while((len=tal.length)<3){
        tal="0"+tal
    }
    tal=tal.split("")
    tal[len-2]=","+tal[len-2]
    for(a=len-5;a>0;a-=3){
        tal[a]="."+tal[a]
    }
    return tal.join("")
}
    function f() {
        document.getElementById("resultat").value=adder(document.getElementById("tal_1").value,document.getElementById("tal_2").value,document.getElementById("tal_3").value)
    }
Avatar billede ebusiness Nybegynder
25. oktober 2009 - 01:10 #1
Du må love mig at du prøver at lære det selv når du får tid. Generel funktion, og med lidt bedre negativ håndtering:

function adder(){
    var decimaler=1
    var faktor=Math.pow(10,decimaler)
    var a
    var tal=0
    var len=arguments.length
    for(a=0;a<len;a++){
        if(typeof(arguments[a])=="string"){
            tal+=faktor*arguments[a].replace(/\./g,"").replace(/\,/g,".").replace(/--/g,"")
        }
        else{
            tal+=faktor*arguments[a]
        }
    }
    tal=Math.floor(tal)
    if(tal==NaN){
        tal=0
        //return null //fjern udkommentering for at returnere null i tilfælde af ugyldigt input
    }
    var fortegn=(tal<0?"-":"")
    tal=""+Math.abs(tal)
    while((len=tal.length)<3){
        tal="0"+tal
    }
    tal=tal.split("")
    tal[len-decimaler]=","+tal[len-decimaler]
    /* tusindtalsseperator udkommenteret
    for(a=len-3-decimaler;a>0;a-=3){
        tal[a]="."+tal[a]
    }
    */
    return fortegn+tal.join("")
}
Avatar billede nemlig Professor
25. oktober 2009 - 01:32 #2
Det lover jeg. Jeg har arbejdet med PHP i ca. 3 år nu og har først nu fundet ud af, hvor smart det er med javascript.

Mange tak endnu engang.
Avatar billede j4k0b Nybegynder
25. oktober 2009 - 08:15 #3
Nu hvor du begynder at få interesse for Javascript, kunne det måske være interessant at kigge på et framework. JQuery har plugins til både at arbejde med valuta og formatere valuta ud fra kultur.

http://jquery.com/
http://plugins.jquery.com/project/currency
http://plugins.jquery.com/project/formatCurrency
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