toFixed

Jofre

Erfahrenes Mitglied
Ich bekomme die Fehlermeldung:

TypeError: anz.toFixed is not a function

Aufruf

{reaktionsZeit =plusMinus(reaktionsZeit,0.25,0.5, 10);}


Code:
function plusMinus(ausgang,delta,unten,oben)
{
        // Mehr oder weniger Zeit zum Suchen
        let anz=ausgang;
        if ((anz + delta)< oben && delta>0)
        {anz=anz + delta; }
        if ((anz + delta)> unten && delta<=0)
        {anz=anz + delta; }           
        anz=anz.toFixed(2);
        return anz;
}
 
Da Du nur Vergleiche und Additionen auf den Parameter ausgang anwendest ist stark zu vermuten, dass deine Variable reaktionsZeit vom Typ String ist. Wende parseInt() oder parseFloat() darauf an und es sollte funktionieren.
 
Verstehe ich nicht.

ich habe als Startwert definiert:

var reaktionsZeit=2;

Und wenn ich nach Ausführung der obigen Funktion schreibe:

meldung(reaktionsZeit.toFixed(2) + " Sek.","normal","16","Arial","#5a617b",340 ,440);

dann bringt es auch die reaktionsZeit mit 2 Nachkommastellen.
 
Du schreibst "als Startwert" - werden darauf im weiteren Verlauf noch irgend welche Rechenoperationen angewendet?
 
nein.

Er geht über den Aufruf
reaktionsZeit =plusMinus(reaktionsZeit,0.25,0.5, 10);}
in die Funktion plusMinus(...) rein.
und wird dort, wenn die Funktion aufgerufen wird, verändert und dann angezeigt über meldung(...)
 
Dann verstehe ich es nicht. Dieser Code funktioniert bei mir ohne Fehlermeldung:
Code:
        var reaktionsZeit = 2;
        reaktionsZeit = plusMinus(reaktionsZeit, 0.25, 0.5, 10);
        console.log(reaktionsZeit);
        function plusMinus(ausgang, delta, unten, oben) {
            // Mehr oder weniger Zeit zum Suchen
            let anz = ausgang;
            if ((anz + delta) < oben && delta > 0) { anz = anz + delta; }
            if ((anz + delta) > unten && delta <= 0) { anz = anz + delta; }
            anz = anz.toFixed(2);
            return anz;
        }
Füge ich dagegen einen zweiten Aufruf hinzu, kommt es zum Fehler, denn dann ist reaktionsZeit ein String:
Code:
        var reaktionsZeit = 2;
        reaktionsZeit = plusMinus(reaktionsZeit, 0.25, 0.5, 10);
        console.log(reaktionsZeit);
        reaktionsZeit = plusMinus(reaktionsZeit, 0.25, 0.5, 10);
        console.log(reaktionsZeit);
        function plusMinus(ausgang, delta, unten, oben) {
            // Mehr oder weniger Zeit zum Suchen
            let anz = ausgang;
            if ((anz + delta) < oben && delta > 0) { anz = anz + delta; }
            if ((anz + delta) > unten && delta <= 0) { anz = anz + delta; }
            anz = anz.toFixed(2);
            return anz;
        }
 
Code:
        var reaktionsZeit = 2;
        // hier ist reaktionsZeit vom Typ Number
        reaktionsZeit = plusMinus(reaktionsZeit, 0.25, 0.5, 10);
        console.log(reaktionsZeit);
        // in plusMinus wird toFixed auf den Wert angewendet
        // dieses liefert einen String zurück
        // daher ist jetzt reaktionsZeit ein String
        // im folgenden Aufruf von plusMinus kommt es daher zum Fehler
        reaktionsZeit = plusMinus(reaktionsZeit, 0.25, 0.5, 10);
 
Am besten für interne Berechnungen mit den Number-Werten arbeiten und toFixed nur anwenden, wenn etwas an den Benutzer ausgegeben oder angezeigt werden soll.
 

Neue Beiträge

Zurück