JSFiddle - React, Tailwind, and code Playground
by Tim Bernhard
HTML
<form>
<input type="text" id="zahl" size="40" placeholder="Zehnerlogarithmus von..." />
<input type="button" id="los" value="Los!" onClick="losHandler(); return false;" />
</form>
<p id="ergebnis"></p>
JavaScript
function losHandler() {
var basis = 10;
var eingabe = document.getElementById("zahl");
var ergebnis = document.getElementById("ergebnis");
ergebnis.innerHTML = "";
eingabe = parseFloat(eingabe.value);
/* eingabe.replace(",","."); */
if (eingabe === null) {
alert("Keine Eingabe erhalten!");
}
/* für verschiedene Browser... (und zur bestimmten Absicherung) */
else if (eingabe === "") {
alert("Keine Eingabe erhalten!");
} else if (eingabe === undefined) {
alert("Keine Eingabe erhalten!");
} else if (isNaN(parseInt(eingabe))) {
alert("Bitte geben Sie nur Zahlen ein!");
} else if (eingabe < 0) {
alert("Bitte geben Sie nur Zahlen grösser als Null ein!");
} else if (eingabe < 1) {
ergebnis.innerHTML = "log<sub>" + basis + "</sub>" + eingabe + " = " + ausweg(eingabe);
} else {
ergebnis.innerHTML = "log<sub>" + basis + "</sub>" + eingabe + " = " + log(eingabe, basis);
}
}
function power(basis, exponent) {
/* damit Potenzgesetze eingehalten werden */
if (exponent === 0) {
return 1;
}
/* Potenzfunktion */
else {
var k = basis;
for (var u = 1; u < exponent; u++) {
k = k * basis;
}
return k;
}
}
function log(wert, basis) {
var a = 0;
var c = 0;
var zahl = wert;
var gesucht = "";
/* eigentliche Rechnung. 15 Stellen */
for (var i = 0; i < 15; i++) {
a = 0;
c = 0;
for (a; zahl >= power(basis, a); a++) {
c++;
}
a = a - 1;
zahl = zahl / (power(basis, a));
zahl = power(zahl, basis);
gesucht += a;
if (i === 0) {
gesucht += ".";
}
}
return nullen(gesucht);
}
function nullen(eingabe) {
eingabe = eingabe.replace("0000000000", "0");
return eingabe;
}
function ausweg(eingabe) {
/* Wenn der Nutzer eine Zahl kleine als 1 eintippt, sind wir machtlos...