Gewichts-Umrechner
Rechnet ein Gewicht in einem Rutsch in sieben Einheiten um: Kilogramm, Unzen, Pfund, Troy Pounds, Stones und Tonnen.
Mit diesem Script könnt ihr verschiedene Gewichtseinheiten zueinander umrechnen. Anders als die üblichen Umrechner mit „von" und „nach" arbeitet dieser hier mit sieben gleichberechtigten Feldern: Ihr tragt euer Gewicht in genau eines davon ein, und beim Klick auf „Umrechnen" füllen sich alle übrigen Felder mit dem passenden Wert. Praktisch ist das immer dann, wenn ihr eine Angabe aus einem englischsprachigen Rezept, einem Frachtbrief oder einem Datenblatt einordnen wollt.
Die Bedienung hat eine kleine Besonderheit, die aus dem Original stammt: Sobald ihr in eines der Felder klickt, werden alle Felder geleert. Das ist Absicht — so bleibt immer nur ein einziger Wert stehen, und das Script weiß eindeutig, von welcher Einheit es ausgehen soll. Tippt also erst euren Wert ein und klickt dann auf „Umrechnen". Der Knopf daneben setzt das Formular auf 1 Kilogramm zurück und rechnet sofort durch — damit seht ihr auf einen Blick, wie viel ein Kilogramm in jeder der sieben Einheiten ist.
Ein paar Worte zu den Einheiten selbst: Die Ounce (Unze) und das Pound (brit. Pfund) gehören zum angloamerikanischen Avoirdupois-System, 16 Ounces ergeben ein Pound. Das Troy Pound ist die alte Gewichtseinheit für Edelmetalle und fällt leichter aus als das gewöhnliche Pound. Der Stone zu 14 Pounds wird in Großbritannien bis heute für Körpergewichte benutzt — „elf stone" sind rund 70 kg. Bei den Tonnen wird es unübersichtlich, weil Short Ton, Long Ton und die metrische Tonne drei verschiedene Größen sind: Die Short Ton zu 2000 Pounds ist in den USA gebräuchlich, die britische Long Ton zu 2240 Pounds entspricht rund 1016 kg, und die metrische Tonne sind genau 1000 kg. Das Script rechnet neben der Short Ton mit der metrischen Tonne — im Original war diese Spalte fälschlich als „Long Tons" beschriftet, obwohl sie mit 1000 kg rechnete.
Das Script stammt in seinem Kern von Jonathan Weesner und ist von 1995 — die Umrechnungsfaktoren haben wir unverändert übernommen, die Bedienung und den Code haben wir modernisiert. Wenn ihr Längen statt Gewichten umrechnen wollt, findet ihr im Archiv den Streckenkonverter; für Temperaturen gibt es den Temperaturkonverter und für Datenmengen den KB-MB-Umrechner.
Beim Klick in ein Feld werden alle Felder geleert — tragt dort euren Wert ein und klickt dann auf „Umrechnen".
So funktioniert das Script
Das Script besteht aus vier Teilen: einer Tabelle mit den sieben Einheiten und ihren Umrechnungsfaktoren, einer Funktion zum Leeren der Felder, einer kleinen Formatierhilfe für die Ausgabe und der eigentlichen Umrechnung. Der Trick, mit dem sieben Felder mit so wenig Code auskommen, steckt in den Faktoren: Jede Einheit bekommt eine Zahl, die sagt, wie viel eine Einheit davon in einem Kilogramm steckt. Kilogramm selbst ist damit die Bezugsgröße mit dem Faktor 1.
const einheiten = [
{ id: "gw-kg", faktor: 1 },
{ id: "gw-oz", faktor: 35.273944 },
{ id: "gw-lb", faktor: 2.2046215 },
…
];
Das ist ein Array (eine Liste) aus Objekten. Jedes Objekt ist ein kleines Datenpaket mit zwei Angaben: der id des zugehörigen Eingabefeldes und dem Umrechnungsfaktor. Ein Kilogramm sind 35,273944 Unzen, also steht bei den Unzen dieser Faktor. Der große Vorteil dieser Schreibweise: Wollt ihr eine weitere Einheit ergänzen — etwa Gramm mit dem Faktor 1000 — legt ihr im HTML ein Feld mit einer neuen id an und schreibt eine Zeile in diese Liste. Am restlichen Code ändert sich nichts.
function feld(einheit) {
return document.getElementById(einheit.id);
}
Diese Mini-Funktion holt zu einem Eintrag der Liste das passende Eingabefeld aus der Seite. document.getElementById() sucht ein Element anhand seiner id — der einzigen Kennzeichnung, die auf einer HTML-Seite nur ein einziges Mal vorkommen darf. Weil das gleich an mehreren Stellen gebraucht wird, lohnt sich die eigene Funktion.
for (const einheit of einheiten) {
const eingabe = feld(einheit).value.trim().replace(",", ".");
if (eingabe !== "") {
kilogramm = Number(eingabe) / einheit.faktor;
break;
}
}
Hier sucht das Script das eine Feld, in das ihr etwas eingetippt habt. Die for … of-Schleife geht die Einheiten der Reihe nach durch; trim() wirft versehentliche Leerzeichen weg und replace(",", ".") tauscht ein deutsches Dezimalkomma gegen einen Punkt, denn JavaScript rechnet nur mit der englischen Schreibweise. Beim ersten nicht leeren Feld wird umgerechnet und mit break die Schleife abgebrochen.
Die Umrechnung selbst ist eine einzige Division: Ein Wert geteilt durch seinen Faktor ergibt das Gewicht in Kilogramm. 16 Unzen geteilt durch 35,273944 sind rund 0,4536 kg. Von dieser Zwischengröße aus lassen sich dann alle anderen Einheiten durch eine Multiplikation erreichen.
einheiten.forEach(function (einheit) {
feld(einheit).value = formatiere(kilogramm * einheit.faktor);
});
forEach ist eine Schleife in Kurzform: Sie ruft die angegebene Funktion einmal für jeden Eintrag der Liste auf. Jedes Feld bekommt also das Kilogramm-Zwischenergebnis mal seinen eigenen Faktor — und weil auch das Ausgangsfeld mitgefüllt wird, steht dort danach der aufgeräumte, gerundete Wert.
function formatiere(wert) {
if (!isFinite(wert)) {
return "";
}
return String(Number(wert.toPrecision(6)));
}
Ohne Formatierung stünden in den Feldern Zahlen wie 0.45359237000000004 — ein bekannter Effekt beim Rechnen mit Kommazahlen im Computer. toPrecision(6) kürzt auf sechs bedeutsame Stellen, das anschließende Number() wirft überflüssige Nullen am Ende weg und String() macht daraus wieder Text für das Eingabefeld. isFinite() fängt den Fall ab, dass gar keine sinnvolle Zahl herauskommt. Wollt ihr genauere Werte sehen, erhöht einfach die 6 in toPrecision(6).
einheiten.forEach(function (einheit) {
feld(einheit).addEventListener("focus", leeren);
});
Zum Schluss werden die Knöpfe und Felder verdrahtet. addEventListener("focus", leeren) heißt: Sobald ein Feld den Eingabefokus bekommt — durch Klick oder Tabulatortaste —, läuft die Funktion leeren() und macht alle sieben Felder leer. Genau das sorgt dafür, dass beim Umrechnen immer nur ein einziger Wert dasteht. Wer das nicht mag, löscht diese vier Zeilen; dann muss man die anderen Felder allerdings von Hand leeren, sonst rechnet das Script immer wieder vom Kilogramm-Feld aus.
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Mathematik
-
5 Zahlen
-
Altersberechnungen
-
Anzahl der Stellen von Potenzen kalkulieren
-
Barrel in Liter
-
Beliebige Wurzel ziehen
-
Binomialverteilung
-
Collatz Problem
-
Denk Dir eine Zahl
-
Dezimalbruch
-
Dezimalzahl in Binärzahl umwandeln
-
Die Kamelhändler
-
Downloadzeit-Rechner
-
Drehender Kreis 1
-
Drehender Kreis 2
-
Drehender Kreis 3
-
Dreiecksrechner
-
Dreisatz
-
Dreisatz antiproportional
-
Einfacher Euro-Rechner
-
Fakultät berechnen
-
Fakultätsrechner
-
Fibonacci Reihe berechnen
-
Fibonacci-Zahlen
-
Flächenberechnung / Dreieck
-
Flächenberechnung / Kreis
-
Flächenberechnung / Parallelogramm
-
Flächenberechnung / Rechteck
-
Flächenberechnung / Trapez
-
Gedanken lesen
-
Geschwindigkeitsmesser