Was in Excel oder OpenOffice nur ein Mouseclick ist könnte in einem JavaScript-Code wie folgt aussehen - das Tausendertrennzeichen für z. B. Währungen!
Aufgerufen wird die Funktion mit einer Variablenzuweisung (für den Rückgabewert) und
den drei Parametern: Die Zahl, der Modus und das Trennzeichen.
Achtung: Die Funktion gibt einen String zurück!
Der Quellcode kann auch im MachMal von css4.at eingesehen werden!
Funktionsnamen mit den drei Parametern. Eine Prüfung ob der erste Parameter auch eine Zahl ist Underline
und vier Variablendeklarationen. Die _zahl
wird in einen String()
gewandelt.
Zuerst wird geprüft, ob in der übergebenen Zahl (jetzt in der _temp
gespeichert) ein Dezimalzeichen vorkommt.
Mit .indexOf
wird ermittelt auf welcher Stelle ein bestimmtes Zeichen vorkommt.
Wird keines gefunden, dann gibt die Methode -1 zurück. Bei Erfolg, wird die Position des Dezimalzeichen (der Punkt)
gespeichert und mittles .slice
die Nachkomma und Vorkommawerte sauber getrennt!
Wenn es keine Dezimalstellen gibt, dann wird die gesammte Zahl als Vorkommastelle definiert und der Nachkommastelle einfach eine Null mitgegeben.
Die Anzahl der Stellen wird in der _anzahl
Variable definiert.
Ein Zähler _c
wird mit dem Wert 0 vereinbart.
Es folgt eine Prüfung, ob die Zahl eigentlich mehr als 4 Stellen hat. Alles darunter wäre doch Sinnlos,
weil welche Tausenderpunkte sollen gesetzt werden, bei einer Zahl die nicht größer als 999 ist?
Die while
Schleife wird ausgeführt, so lange die Anzahl der Stellen größer als die Zählvariable _c
ist.
Mit var _position = _vorkomma.length - _c;
wird das Pferd von hinten gesattelt.
Während die Zählvariable immer größer wird, wird die Postion immer kleiner. Die einzelenen Strings
werden von hinten gelesen und so auch wieder zusammengesetzt. Mit dem Unterschied, dass alle drei mal
ein Trennzeichen gesetzt wird.
Hier leistet die Modulo Operation mit 3 hervorragende Arbeit. Alle drei mal gibt es eine 0 - also den Auftrag das Trennzeichen einzusetzen.
Erreicht die Position die Stelle 0 dann wird die Schleife verlassen. So verhindert man noch einen letzten Punkt wo er nicht sein soll!
Zum Schluss wird noch der Modus aufgearbeitet. Wir erinnern uns: Beim Funktionsaufruf kann man entscheiden, wie mit
der Nachkommastelle verfahren werden soll. Der return
Auftrag beendet die Funktion ... et voilà!