HTML/CSS/JAVASCRIPT Taschenrechner Fehler beheben?
Hi
ich programmiere grade einen Taschenrechner mithilfe von Javascript, habe auch alles soweit richtig hinbekommen. nur wenn ich einen buchstaben eingebe zeigt mit der browser(in diesem fall t): Uncaught ReferenceError: t is not defined
welche funktion muss ich noch hinzufügen das einfach gar nichts bei einem buchstaben passiert aber auch keine fehlermeldung kommt?
danke
5 Antworten
Mache dich doch etwas mehr mit HTML vertraut!
Du benutzt teilweise alte und falsche Tags und hast teilweise einen unlogischen und nicht strukturierten Aufbau deines HTML Gerüstes.
Bei deinem Input Field würde ich anstelle vom type text besser den type number nutzen:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number
Hey :)
Ich bin leider nicht sehr versiert in JavaScript, aber nach kurzer Recherche bin ich auf die isNaN-Funktion gestoßen, die in diesem Fall eventuell ganz praktisch sein könnte: https://www.w3schools.com/jsref/jsref_isnan.asp
Beste Grüße
Kai
Schau mal hier: https://jsfiddle.net/3w4Ltt5p/10/
Ich habe jetzt einfach einen try Catch Block eingefügt.
Du kannst die Eingaben auch vorher auf Gültigkeit prüfen
Mit:
isNaN("3434") // false
isNaN("asdasd") // true
Kannst du überprüfen, ob der String eine Zahl ist oder nicht.
Und du kannst mit Regex überprüfen, ob ein String Buchstaben enthält
/^[a-zA-Z]+$/.test("sdsdsd") // true
/^[a-zA-Z]+$/.test("32323+") // false
/^[a-zA-Z]+$/.test("23232") // false
Am besten immer dann, wenn irgendwo Fehler auftreten können, mit einem try catch Block den Fehler abfangen. Dann kannst DU selbst mit dem Fehler machen, was du willst. Ich habe einfach ein alert eingefügt.
if-Abfrage mit Regex vor die Auswertung, dann kannst du mit else den Benutzern auch noch einen Hinweis auf den Fehler geben.
ungetestet, aber irgendwie so sollte das klappen:
if (/^\d+$/.test( -->deinevariable<-- )) {
--> Rechnen <--
} else {
alert ('Fehlermeldung');
}
-->deinevariable<-- muss natürlich duch deine Variable ersetzt werden und -->Rechnen<-- durch deine Routine
was meinst du mit routine? bei den variablen alle buchstaben und satzzeichen eingeben? ich möchte das man in mein lösungsfeld nichts eintragen kann
-->deinevariable<-- = die Variable, die du in deinem JS-Code für den Wert des Eingabefeldes nutzt
--> Rechnen <-- = deine Rechenoperation mit der Variable
ich verstehe das nicht sorry habe heute damit angefangen geht das auch für dummies
Wenn du einen Rechner mit JavaScript geschrieben hast, dann wirst du irgendwie die eingegebene Zahl aus einem Eingabefeld auslesen, damit du damit rechnen kannst. Das wäre deine Variable. (z.B.: var Zahl = ...)
Dann wirst du einen Code geschrieben haben, der die Rechnung ausführt. Das wäre deine Rechenoperation.
Die Codestelle wäre noch ganz praktisch
Was du für einen Code geschrieben hast bzw. wo der Fehler Auftritt.
das ist es ja die buchstaben sind nicht definiert
Trotzdem, poste mal deinen Code, damit wir sehen, was bei dir im Code überhaupt abgeht.
Ja, poste bitte den ganzen Code. Alles andere führt zu nix.
function Calculator_Calc() {
var resultsField = document.calculator.calcResults;
if (/(\d+(?:.\d{3})*)(?:,(\d+))?/.test( resultsField.value )) {
resultsField.value = eval(this.evalStr+resultsField.value);
} else {
alert('bitte keine Buchstaben eingeben');
}
this.evalStr = ""; }
Mit der fett markierten Ergänzung sollte das Problem behoben sein
wo muss ich das genau eingeben? bei mir zeigt er wieder einen fehler in reihe 96 an
dort wo bei dir "function Calculator_Calc() {" steht fängt die passage an und dort wo "this.evalStr = ""; }" steht hört sie auf. Ich habe doch zur Orientierung deinen Textblock übernommen.
und wie gebe ich das ein? bin neu in dem gebiet und froh das mein rechner schonmal die rechenzeichen erkennt und anwendet :D