HTML/CSS/JAVASCRIPT Taschenrechner Fehler beheben?

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

Woher ich das weiß:Berufserfahrung – Software-Entwickler

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.


UweArnoldus 
Fragesteller
 30.05.2018, 12:00

und wie gebe ich das ein? bin neu in dem gebiet und froh das mein rechner schonmal die rechenzeichen erkennt und anwendet :D

0
Kompaktdesign  30.05.2018, 12:10
@UweArnoldus

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

0
UweArnoldus 
Fragesteller
 30.05.2018, 12:13
@Kompaktdesign

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

0
Kompaktdesign  30.05.2018, 12:18
@UweArnoldus

-->deinevariable<-- = die Variable, die du in deinem JS-Code für den Wert des Eingabefeldes nutzt

--> Rechnen <-- = deine Rechenoperation mit der Variable

0
UweArnoldus 
Fragesteller
 30.05.2018, 12:21
@Kompaktdesign

ich verstehe das nicht sorry habe heute damit angefangen geht das auch für dummies

0
Kompaktdesign  30.05.2018, 12:29
@UweArnoldus

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.

1

Die Codestelle wäre noch ganz praktisch


UweArnoldus 
Fragesteller
 30.05.2018, 11:25

welche meinst du?

0
Xearox  30.05.2018, 11:29
@UweArnoldus

Was du für einen Code geschrieben hast bzw. wo der Fehler Auftritt.

0
UweArnoldus 
Fragesteller
 30.05.2018, 11:30
@Xearox

das ist es ja die buchstaben sind nicht definiert

0
Xearox  30.05.2018, 11:49
@UweArnoldus

Trotzdem, poste mal deinen Code, damit wir sehen, was bei dir im Code überhaupt abgeht.

1
Kompaktdesign  30.05.2018, 13:00
@UweArnoldus

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 = ""; }

0
UweArnoldus 
Fragesteller
 30.05.2018, 13:07
@Kompaktdesign

wo muss ich das genau eingeben? bei mir zeigt er wieder einen fehler in reihe 96 an

0
Kompaktdesign  30.05.2018, 13:32
@UweArnoldus

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.

0