Servus!
Ich versuche ein Mathe-Quiz zu programmieren.
In einem Menü mit radio-Buttons kann man den Operator auswählen. Eigentlich könnte man den gewählten Radiobutton ermitteln, dessen value (oder den Textinhalt des Labels) auslesen und mit Zufallszahlen in eine Zeichenkette umwandeln, die dann mit eval() ausgewertet wird.
var operator = document.querySelector('input[name="op"]:checked').value;
ergebnis = eval(zahl1 + operator + zahl2);
Ich würde gerne auf eval() verzichten und habe nun ein Monster erschaffen:
var operator = document.querySelector('input[name="op"]:checked').id;
switch (operator) {
case 'plus':
ergebnis = zahl1 + zahl2;
document.querySelector('#operator').textContent = '+';
break;
case 'minus':
ergebnis = zahl1 - zahl2;
document.querySelector('#operator').textContent = '-';
break;
case 'div':
ergebnis = zahl1 / zahl2;
document.querySelector('#operator').textContent = ':';
break;
case 'mal':
ergebnis = zahl1 * zahl2;
document.querySelector('#operator').textContent = '*';
break;
case 'random':
document.querySelector('output').textContent = 'Was soll ich hier machen?';
document.querySelector('#operator').textContent = '?';
break;
default:
document.querySelector('output').textContent ='Sie bleiben leider dumm!';
break;
}
Trotzdem (oder gerade deshalb) stehe ich auf dem Schlauch, wie ich im Falle der Zufallsauswahl "random" den Operator zufällig ermittele (evtl operator = rand(1,4);
) und dann ohne weiteren verschachtelten switch wieder in die Rechnungen einfüge.
Über Ideen und Lösungsansätze wäre ich sehr dankbar.
Herzliche Grüße
Matthias Scharwies
--
Es gibt viel zu tun: ToDo-Liste
Es gibt viel zu tun: ToDo-Liste