Avatar billede Himbear Nybegynder
17. marts 2008 - 23:37 Der er 16 kommentarer og
1 løsning

Komma i sammenlægning

Hello,

Jeg er i gang med at justere nogle ting på et eksisterende website. F.eks. skal jeg fjerne en funktion som runder op og ned i en lille shop. Mit problem er at efter jeg har fjernet funktionen lægger den ikke priserne med decimaler rigtigt sammen.

Kan i hjælpe med at få det ændret?

I kan se det hele på http://visitdk.dk/test/?id=webshop

Hvis i vælger 1 stk. Danmark Malebog, så kan i se problemet.
Avatar billede olebole Juniormester
17. marts 2008 - 23:49 #1
<ole>

Du kan ikke lægge kommatal sammen i JS. Du må fjerne dine tusindtal separatorer og så bruge punktum i stedet for komma, når du foretager beregningerne

/mvh
</bole>
Avatar billede Himbear Nybegynder
18. marts 2008 - 00:08 #2
Er der nogen smart måde at gøre det på? Det skal jo helst vises med komma i ialt-kolonnen.
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 00:19 #3
Jeg synes nu Oles er ret smart.

1) Vis kunden prisen med komme "39.75"
2) Regn selv med punktumtal:  39.75  - programmeringssprog kan simpelthen ikke andet
3) Vis summen med komme: "147,95" og evt tusindtalsseparatorer
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 00:20 #4
Komme, komme - hvad er der galt med min "a"-tast? Jeg mener: komma
Avatar billede Himbear Nybegynder
18. marts 2008 - 00:32 #5
Ja, det kan godt være at det er smart, men jeg ved ikke helt hvordan jeg skal gøre det :) Jeg er ikke programmør ...

Lige nu bliver prisen regnet ud med punktum, se f.eks.
if(count == "1") {
        var pris = 1*39.95;
      }


Men er det ikke rigtigt at nedenstående script fjerner punktummet?

function tal_sep(num,lolled) {
        if (lolled == 1) {
          var komma = ",";
          var seperator = ".";
       
          num = num.replace('.',',','g');
           
          num = num.toString();
          a = num.split(komma);
          x = a[0];
          y = a[1];
          z = "";
          if (typeof(x) != "undefined") {
            for (i=x.length-1;i>=0;i--) { z += x.charAt(i); }
            z = z.replace(/(\d{3})/g, "$1" + seperator);
            if (z.slice(-seperator.length) == seperator) { z = z.slice(0, -seperator.length); }
            x = "";
            for (i=z.length-1;i>=0;i--) { x += z.charAt(i); }
            if (typeof(y) != "undefined" && y.length > 0) { x += komma + y; }
          }
          return x;
        }
        else {
          return num.replace(',','.','g').replace('.','','g');
        }
      }

Kan i uddybe hvad det er jeg helt præcis skal gøre? :)
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 00:39 #6
Hvis du ikke er programmør, hvorfor beskæftiger du dig så med programmering ;)
Hvis jeg skulle opereres for nedslidte fingernegle, ville jeg foretrække en uddannet kirurg, og ikke en automekaniker.

Spøg til side.

Hvor har du koden fra, når du ikke selv har lavet den?

Problemet er nok linien

        return num.replace(',','.','g').replace('.','','g');

der ikke giver meget mening. Den bruges, så vidt jeg kan se, til at regne videre på et tal, der allerede vises til brugen på "39,75"-formatet, men som "kommer til" at gange det med 100. (kan du få kunden til at betale, er det selvfølgelig ok...)
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 00:40 #7
Og måske-muligvis kan en ændring til

  return num.replace(',','.','g').replace('.','','g');

give en forskel. Jeg har ikke prøvet.
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 00:40 #8
Doh, Erik. Det er sent, men altså... jeg mener nok:

  return num.replace(',','.','g');
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 00:43 #9
Det som ovenstående "hack" ikke løser, er at man bør holde beregninger, og visning af disse beregninger adskilte. Man skal ikke "blande koks og kul" (nogen der husker Vakse Viggo?)...
Avatar billede Himbear Nybegynder
18. marts 2008 - 00:54 #10
hehe... ja, jeg burde nok bare holde mig fra det. Som jeg skrev retter jeg i et eksistrende site, men det startede bare med nogle grafiske ændringer :D

Jeg prøver ... tak ... indtil videre ;)
Avatar billede Himbear Nybegynder
18. marts 2008 - 00:59 #11
Det virker :)

Nu jeg har fat i en uddannet kirurg, så har jeg lige et hurtigt spørgsmål ;) Kan jeg tvinge den til at vise med to decimaler? Lige nu viser den f.eks. 79,9 kr.
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 07:41 #12
Nu er Javascript en lidt sløv kniv, selv for en kirurg, men lidt kan den da skære. Kig på http://www.mredkj.com/javascript/numberFormat.html
Avatar billede Himbear Nybegynder
18. marts 2008 - 13:10 #13
Nu opdagede jeg lige at den lægger forkert sammen med tusindtal seperator nu. Kan det være det vi ændrede?
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 14:59 #14
Ja, det ser lidt underligt ud - men som sagt bør man ikke lave hovsa-løsninger, på noget, der egentlig skulle løses på en anden måde. Du udregner rigtige tal i de variabler du kalder "pris", og du burde have een af dem for hver linie, som du så lægger sammen.
Avatar billede Himbear Nybegynder
03. juli 2008 - 12:50 #15
Smider i lige et svar, så vi kan få lukket ...
Avatar billede erikjacobsen Ekspert
03. juli 2008 - 13:36 #16
Jeg samler slet ikke på point, tak.
Avatar billede Himbear Nybegynder
14. juli 2008 - 23:27 #17
Ok, lukker. Tak for hjælpen!
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