Javascript Runden


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
#1
Hallo,

ich hoffe mir kann da einer helfen. Ich schreibe gerade an einer Kalkulations-Tabelle und habe das Problem, dass meine Ergebnisse sich nicht auf 2 Nachkommastellen runden.

Ich habe es so Probiert, aber meine Tabelle gibt keine Zahl raus.

Code:
EinzelPreisBegleitpersonen = EinzelPreisBegleitpersonen.toFixed(2);
document.getElementById("EPreisBegleitpersonen").innerHTML = EinzelPreisBegleitpersonen;

PreisBegleitpersonen = PreisBegleitpersonen.toFixed(2);
PreisBegleitpersonen = document.getElementById("GPreisBegleitpersonen").innerHTML = EinzelPreisBegleitpersonen * document.getElementById("AnzahlBegleitpersonen").value;
So sieht das bei der Ausgabe aus:

Tabellenausschnitt.PNG

Danke im voraus :)
 

basti1012

Erfahrenes Mitglied
#2
kannst du mal das html dazu posten ? Verstehe das gerade so nicht. Wenn du die 11 mit der 2 multiplizieren willst und im letzten Feld ausgeben willst geht das auch etwas leichter.Nur dein Code sieht mir so aus als wenn da noch was zu gehöhrt. Kannst du deswegen mal link zur seite schicken oder den ganzen Codedazu posten ?
 
#3
Code:
<td class="Titel">Anmeldung von Begleitpersonen</td>
<td class="Einzelpreis"><output id="EPreisBegleitpersonen"></output> €</td>
<td class="Stück"><input type="number" min="0" id="AnzahlBegleitpersonen" value="0" step="1.0" onclick="Kalkulieren()"/></td>
<td class="Gesamtpreis"><output id="GPreisBegleitpersonen"></output> €</td>
Ich hab den Einzelpreis in Javascript als Variable gespeichert damit dieser leichter geändert werden kann, falls es mal zu Preisänderungen kommt. Diesen hab ich dann in HTML weitergegeben und möchte diesen Wert auch zum berechnen benutzen. Die Zahl wo die 2 steht kann beliebig geändert werden.
Zudem bin ich noch ein Anfänger in Javascript, deswegen entschuldigt mir meine Fehler :giggle:
Ein Link zu der Seite gibts keinen da ich momentan Offline dran arbeite.
 
#5
Javascript:
function Kalkulieren {
    var EinzelPreisBegleitpersonen = 11.0;
    var FSAntrag = 43.40;
    var PreisBegleitPersonen;
    var PreisFsStelle;
    ...

    EinzelPreisBegleitpersonen = EinzelPreisBegleitpersonen.toFixed(2);
    //1. Spalte
    document.getElementById("EPreisBegleitpersonen").innerHTML = EinzelPreisBegleitpersonen;
    //3. Spalte
    PreisBegleitpersonen = document.getElementById("GPreisBegleitpersonen").innerHTML = EinzelPreisBegleitpersonen * document.getElementById("AnzahlBegleitpersonen").value;
    
    //Tabellenzeile die ganz am Ende angezeigt wird, fasst nachher die Kosten zusammen
    PreisFsStelle = document.getElementById("GesamtFsStelle").innerHTML = parseFloat(FSAntrag) + parseFloat(PreisBegleitpersonen);
    
}
Ich hab jetzt mal nicht das komplette Javascript eingefügt, wäre ja sonst zuviel :LOL:, aber im Endeffekt hab ich alle Berechnungen die sonst noch stattfinden so geschrieben, das Problem ist halt das ich die 3. Spalte nie auf 2 Nachkommastellen gerundet bekomme, ansonsten funktioniert es eigentlich.
 

basti1012

Erfahrenes Mitglied
#6
Wo möchtest du den die 2 Nachkomma Stellen den haben ?Da wo das Euro Zeichen in Post1 ist,oder am Ende deiner Tabelle wo das Gesamt kosten angezeigt werden soll ?
 

Sempervivum

Erfahrenes Mitglied
#7
Der Hauptfehler liegt hier: function Kalkulieren {
Das Klammernpaar fehlt hinter dem Funktionsnamen. Dieses musst Du auch notieren, wenn die Funktion keine Parameter hat.
Mache dich mit der Console vertraut, die zeigt dir solche Fehler an.
Außerdem gehe ich davon aus, dass Du alle Preisangaben mit zwei Nachkommastellen ausgeben willst.
Weiter empfehle ich, intern nur mit den nummerischen Werten zu rechnen und erst bei der Ausgabe das toFixed(2) anzuwenden. Dann brauchst Du keine parseFloat():
Dann würde das Ganze so aussehen:
Javascript:
        function Kalkulieren() {
            var EinzelPreisBegleitpersonen = 11.0;
            var FSAntrag = 43.40;
            var PreisBegleitPersonen;
            var PreisFsStelle;

            //1. Spalte
            document.getElementById("EPreisBegleitpersonen").innerHTML = EinzelPreisBegleitpersonen.toFixed(2);
            //3. Spalte
            PreisBegleitpersonen = EinzelPreisBegleitpersonen * document.getElementById("AnzahlBegleitpersonen").value;
            document.getElementById("GPreisBegleitpersonen").innerHTML = PreisBegleitpersonen.toFixed(2);
            //Tabellenzeile die ganz am Ende angezeigt wird, fasst nachher die Kosten zusammen
            PreisFsStelle = FSAntrag + PreisBegleitpersonen;
            document.getElementById("GesamtFsStelle").innerHTML = PreisFsStelle.toFixed(2);
        }
 
#8
Der Hauptfehler liegt hier: function Kalkulieren {
Das Klammernpaar fehlt hinter dem Funktionsnamen. Dieses musst Du auch notieren, wenn die Funktion keine Parameter hat.
Mache dich mit der Console vertraut, die zeigt dir solche Fehler an.
Außerdem gehe ich davon aus, dass Du alle Preisangaben mit zwei Nachkommastellen ausgeben willst.
Weiter empfehle ich, intern nur mit den nummerischen Werten zu rechnen und erst bei der Ausgabe das toFixed(2) anzuwenden. Dann brauchst Du keine parseFloat():
Dann würde das Ganze so aussehen:
Javascript:
        function Kalkulieren() {
            var EinzelPreisBegleitpersonen = 11.0;
            var FSAntrag = 43.40;
            var PreisBegleitPersonen;
            var PreisFsStelle;

            //1. Spalte
            document.getElementById("EPreisBegleitpersonen").innerHTML = EinzelPreisBegleitpersonen.toFixed(2);
            //3. Spalte
            PreisBegleitpersonen = EinzelPreisBegleitpersonen * document.getElementById("AnzahlBegleitpersonen").value;
            document.getElementById("GPreisBegleitpersonen").innerHTML = PreisBegleitpersonen.toFixed(2);
            //Tabellenzeile die ganz am Ende angezeigt wird, fasst nachher die Kosten zusammen
            PreisFsStelle = FSAntrag + PreisBegleitpersonen;
            document.getElementById("GesamtFsStelle").innerHTML = PreisFsStelle.toFixed(2);
        }
Ich danke dir, das war die Lösung :) Ich werden den Tipp annehmen mit der Console, danke.
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…