gary: Keine Null Anzeige

Hallo zusammen,

Kennt Ihr dass: Gerade denkt man, es ist alles fertig und funktioniert, da taucht plötzlich ein Fehler auf...

Mein Anliegen: Ich will eine Zahl darstellen, hier 191,05 Euro. Diese Zahl wurde zuvor in cent berechnet, und dann in Vor und Nachkomma zerlegt. Der Code sieht so aus:

Preisall = Preis00 + Preis01 + Preis02 + Preis03 + Preis04 + Preis05 + Preis06 + Preis07 + Preis08 + Preis09 + Preis10 + Preis11 + Preis12;
   vorkommaall  = Math.floor(Preisall/100);
   nachkommaall = Preisall % 100;
 document.getElementsByName("Anzbrutto")[0].value = vorkommaall + "," + nachkommaall + " Euro";

Preisall wird von mehreren Teilpreisen zusammengezählt. "Anzbrutto" ist ein Anzeigefeld für den Bruttogesamtpreis. Und hier wird leider 191,5 Euro angezeigt - statt 191,05...  Wo ist die Null hin?

Ich weiss, recht kompliziert um die Zeit. Habe den Fehler durch mein neues Excelprogramm bemerkt ("Mail-Worker" habe ich es getauft...)

Viele Grüsse gary

  1. Moin Moin!

    sprintf("%.2f €",summe) könnte helfen.

    In Javascript hilft nur rohe Gewalt:

    var text=euros+",";
    if (cents<10) {
      text=text+"0";
    }
    text=text+cents+" €";

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Hi Alexander,

      Danke für die Weisung zum Richtigen Weg. Ich habe es so gelösst:

      addzero =""

      if (nachkommaall<10) {
          addzero ="0"
         }

      document.getElementsByName("Anzbrutto")[0].value = vorkommaall + "," + addzero + nachkommaall + " Euro";

      Danke für den Tip, hat geholfen!

      Viele Grüsse gary

      1. Hello out there!

        addzero =""

        if (nachkommaall<10) {
            addzero ="0"
           }

        Dafür kannst du auch einfach schreiben:

        addzero = (nachkommaall < 10) ? "0" : "";

        [http://de.selfhtml.org/javascript/sprache/bedingt.htm#entweder_oder]

        Aber die Variable addzero sollte nicht global sein; also:

        var addzero = (nachkommaall < 10) ? "0" : "";

        [http://de.selfhtml.org/javascript/sprache/variablen.htm#definieren]

        See ya up the road,
        Gunnar

        --
        „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
        1. Hi Gunnar,

          Dafür kannst du auch einfach schreiben:

          addzero = (nachkommaall < 10) ? "0" : "";

          Gut,ist viel kürzer, aber ob es auch einfacher ist? *g*

          Dank Alexander zeigt mein Anzeigefeld (readonly) nun 191,05 Euro an.Was ich jetzt aber noch nicht ganz verstehe ist, das nach dem Abschicken der Bestellung in der E-Mail trotzdem 191,5 Euro steht - statt 191,05.

          Dies trägt den Wert in das Anzeigefeld ein:

          document.getElementsByName("Anzbrutto")[0].value = vorkommaall + "," + addzero + nachkommaall + " Euro";

          Dies öffnet das Anzeigefeld:

          <form action="input_text_value.htm">
          <input name="Anznetto" type="text" size="10" value="0,00 Euro" readonly>
          </form>

          Und das sollte den Anzeigewert verschicken:

          <input type="hidden" name="Brutto">

          Nur zur info:
          Wenn man im deutschen shop 18 Patronen und ein Gerät auswält, bekommt man diese Problemsumme.

          Er sendet korrekt,nur die zusätzliche Null sendet er nicht mit...

          Keine Ahnung warum -die Anzeige am Bildschirm stimmt ja 100%ig...

          Viele Grüsse gary

          1. Hi,

            Und das sollte den Anzeigewert verschicken:

            <input type="hidden" name="Brutto">

            Und wo und wie schreibst du den Wert da hinein ...?

            MfG ChrisB

            1. Abend ChrisB,

              Das ist eine gute Frage...

              Ich dachte hier:

              document.getElementsByName("Anzbrutto")[0].value = vorkommaall + "," + addzero + nachkommaall + " Euro";

              Das Prog ist mitlerweile so gross, das ich schon gar nicht mehr weis, was ich vor drei Monaten geschrieben habe :-(

              War nämlich ein mords akt, bis zum jetzigen Ist-Zustand...

              Ich such noch moment...

              Grüsse gary

              1. Hi,

                Ich dachte hier:

                document.getElementsByName("Anzbrutto")[0].value = vorkommaall + "," + addzero + nachkommaall + " Euro";

                Da greifst du auf Anzbrutto zu, das hidden field heisst aber Brutto.

                MfG ChrisB

                1. Hi ChrisB,

                  Ist es wohl das:

                  document.Formular.Brutto.value = vorkommaall + "," + nachkommaall + " Euro";

                  Ich habes es mit der Suchfunktion lokalisiert. Das muss ich wahrscheinlich so anpassen:

                  document.Formular.Brutto.value = vorkommaall + "," + addzero + nachkommaall + " Euro";

                  Dann sollze es gehen?

                  Merci hey - Vielen Dank

                  gary

                  1. Hi ChrisB,

                    Ich habe es geändert und online. Mailversand klappt tadellos. Danke nochmals und eine gute Nacht.

                    Gruss gary

        2. Hi,

          Ich wollte Dir gerade eine noch Mail bezüglich Deiner Processing-Instruction-XSLT-Frage schreiben (mir ist noch etwas eingefallen) und die kam zurück mit:

          550 <***.***@web.de> Benutzer hat zuviele Mails auf dem Server. / User has too many messages on the server.

          (die E-Mail-Adresse habe ich wg. Spidern, die das Forum abgrasen, anonymisiert)

          Räum mal bitte Dein Postfach auf. ;-)

          Viele Grüße,
          Christian

      2. Hallo,

        Ich habe es so gelösst:

        addzero =""

        if (nachkommaall<10) {
            addzero ="0"
           }

        document.getElementsByName("Anzbrutto")[0].value = vorkommaall + "," + addzero + nachkommaall + " Euro";

        Das geht noch schöner und universeller:

          
        var cents = function (n) {return (n > 9) ? n : "0" + n;}  
          
        document.getElementsByName("Anzbrutto")[0].value = vorkommaall + "," + cents(nachkommaall) + " Euro";  
        
        

        Oder noch universeller und eleganter (ich liebe diese Wort ;-):

          
        var betrag = function (vorkomma, nachkomma, waehrung, komma) {  
          
          var kleinkram = function (n) {return (n > 9) ? n : "0" + n;}  
          return vorkomma + komma + kleinkram(nachkomma) + " " + waehrung;  
        }  
          
        document.getElementsByName("Anzbrutto")[0].value = betrag(vorkommaall, nachkommaall, "Euro", ",");  
        
        

        Gruß, Don P