+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Firefoxproblem mit math.round und .toFixed

  1. #1
    TP-Veteran wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE Avatar von wildmieze
    Registriert seit
    Dec 2003
    Beiträge
    1.715

    Firefoxproblem mit math.round und .toFixed

    Moin

    Nach mehreren Stunden Arbeit an einem Formular kriege ich einen letzten Fehler immer noch nicht raus ..

    Ich habe folgende Funktion:

    Code:
    function rechene4a() {	
    var Perw = document.getElementById("ERW4a").value * document.getElementById("Epreis4a").value ;
    var Pkin = document.getElementById("KIN4a").value * document.getElementById("Kpreis4a").value ;
    var gspe = (Math.round((Perw + Pkin) * 10000) / 10000);
    document.bestellung.gsfeld4a.value = gspe.toFixed(2);
    document.getElementById("E4a").value = document.getElementById("ERW4a").value;
    document.getElementById("K4a").value = document.getElementById("KIN4a").value;
    document.getElementById("gesamt").value = gspe.toFixed(2);
    rechenetotal();
    }
    Aufgerufen wird es onchange bei einem Inputfeld.
    Im Prinzip läuft Alles problemlos. Aber: Firefox scheint Math.round und .toFixed zu ignorieren, so daß ich als Ergebnis unschön krumm-falsche Kommazahlen angezeigt bekomme.

    Bei der function "rechenetotal", die da aufgerufen wird, klappt aber komischerweise das toFixed auch im Firefox.

    Code:
    var d9 = document.bestellung.gsfeld2a.value * 1;
    var d10 = document.bestellung.gsfeld4a.value * 1;
    var d11 = document.bestellung.gsfeld5a.value * 1;
    var totalerpreis = d9+d10+d11;
    document.zusatzservice.gstotal.value = totalerpreis.toFixed(2);
    document.getElementById("gstotal1").value = totalerpreis.toFixed(2);
    }
    .. ich hab schon versucht, die values aus dem ersten codeblock auch zunächst mit 1 zu multiplizieren, weil das der erste Unterschied war, der mir aufgefallen ist. Nützt aber nix. Und auch ohne das Math.round wird das .toFixed nicht beachtet. Ich habe auch ausprobiert, statt getElementByID die kürzere Schreibweise "bestellung.ERW4a.value" zu verwenden, ändert aber auch nichts.

    Im Internet Explorer geht Alles wie gewünscht ...

    .. hat jemand noch ne Idee zur Fehlersuche?

    Liebe Grüße
    Mieze

    EDIT: ich hab gerade noch versuchsweise die (vermutlich überflüssige?) Klammer um das math.round rausgenommen - hilft auch nicht.

  2. #2
    TP-Greis SvenWeb lebt für das TP und seine User SvenWeb lebt für das TP und seine User SvenWeb lebt für das TP und seine User SvenWeb lebt für das TP und seine User SvenWeb lebt für das TP und seine User SvenWeb lebt für das TP und seine User SvenWeb lebt für das TP und seine User
    Registriert seit
    Oct 2004
    Ort
    Hannover
    Beiträge
    5.875
    Ich kenne JS nicht, aber bist du dir sicher, dass Perw und Pkin vom Format "Number" sind und nicht als String interpretiert werden?

    In anderen Programmiersprachen könntest du mit Strings nämlich nicht rechnen und müsstest erst den String umwandeln, sprich "parsen". Ob das bei JS auch so ist weiß ich nicht, wäre aber eine Möglichkeit

    Gruß
    Sven
    Lieber sich das Hirn verrenken, als dem Finanzamt was zu schenken
    Immer informativ: Linkliste Steuerrecht | Steuerlexikon | Die EÜR | Steuerinfothread | Googlebedienung

  3. #3
    TP-Veteran wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE Avatar von wildmieze
    Registriert seit
    Dec 2003
    Beiträge
    1.715
    Danke für Deine Antwort
    Ja, hatte ich auch schon gedacht .. und bei meinen zwischenzeitlichen Versuchen hatte ich parseInt auch schonmal eingefügt .. allerdings spricht dagegen, daß das Script an sich ja völlig richtig rechnet .. müsste nicht Alles, was keine Nummer ist, im Ergebnis mit "NaN" bestraft werden? .. hmm .. ich meine mich auch zu erinnern, daß zu diesem Zweck die values in der zweiten genannten Funktion mit 1 multipliziert werden .. muss ja nen Grund haben .. und das hatte ich ja auch schon versucht ..

    .. aber ich werds morgen Nacht nochmal mit parseInt versuchen .. vielleicht hatte ich es einfach nur falsch eingebaut ..

  4. #4
    TP-Veteran wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE wildmieze ist ein richtiges Arbeitstier - DANKE Avatar von wildmieze
    Registriert seit
    Dec 2003
    Beiträge
    1.715
    Soooo .. hab heute endlich die Zeit gefunden, mich nochmal damit zu befassen ..
    ..parseInt war bei Kommazahlen wohl Quatsch, also habe ich es mit parseFloat versucht. Und siehe da: es funktioniert! .. ich frag mich zwar immer noch, warum das Formular überhaupt gerechnet hat, obwohl es anscheinend keine Zahlen waren, warum es im IE funktioniert hat, aber nicht im Firefox, warum es bei den anderen Funktionen das Problem nicht gegeben hat .. aber ejaaaal .. Hauptsache, es geht jetzt. Hier der geänderte Code (der durchaus noch Mumpitz enthalten kann, aber wie gesagt: Es funktioniert, also fass ich es nicht mehr an *g*):

    Code:
    function rechene4a() {	
      var Perw = document.getElementById("ERW4a").value * parseFloat(document.getElementById("Epreis4a").value);
      var Pkin = document.getElementById("KIN4a").value * parseFloat(document.getElementById("Kpreis4a").value);
      var gspe = Math.round((Perw + Pkin) * 10000) / 10000;
      document.bestellung.gsfeld4a.value = gspe.toFixed(2);
      document.getElementById("E4a").value = document.getElementById("ERW4a").value;
      document.getElementById("K4a").value = document.getElementById("KIN4a").value;
      document.getElementById("gesamt").value = gspe.toFixed(2);
      rechenetotal();
    }

+ Antworten

Ähnliche Themen

  1. Movieclips ansteuern mit setInterval oder Math.random
    Von Angie3007 im Forum Flash & Multimedia
    Antworten: 12
    Letzter Beitrag: 04.09.2007, 17:39
  2. Math.round() ungenau??
    Von StephanF im Forum Flash & Multimedia
    Antworten: 3
    Letzter Beitrag: 15.06.2006, 18:02
  3. Indesign + Math Type
    Von pacer_pne im Forum Layout- & Vektor-Programme
    Antworten: 1
    Letzter Beitrag: 03.01.2006, 15:19
  4. math. Zeichen und Aufzählungszeichen
    Von unwissend im Forum PrePress
    Antworten: 2
    Letzter Beitrag: 02.05.2003, 14:00
  5. math random
    Von Rizzla im Forum Flash & Multimedia
    Antworten: 3
    Letzter Beitrag: 16.05.2001, 11:24

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51