Matthias Scharwies: Alternative zu eval() für arithmetische Berechnungen

Beitrag lesen

problematische Seite

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

akzeptierte Antworten

0 52

Alternative zu eval() für arithmetische Berechnungen

Matthias Scharwies
  • javascript
  1. 0
    Gunnar Bittersmann
    1. 1
      Rolf b
      1. 1
        Felix Riesterer
        1. 1
          Gunnar Bittersmann
      2. 0
        Matthias Scharwies
        1. 2
          Rolf b
          • javascript
          • programmiertechnik
          1. 0
            Matthias Scharwies
            1. 0
              Rolf b
              1. 0
                Camping_RIDER
                • humor
                • menschelei
          2. 1
            1unitedpower
            1. 0
              Rolf b
              1. 0
                1unitedpower
                1. 0
                  Rolf b
                  1. 0
                    1unitedpower
        2. 0
          JürgenB
          1. 1
            Christian Kruse
            1. 0
              JürgenB
              1. 0
                Christian Kruse
  2. 0
    Tabellenkalk
    1. 0
      Gunnar Bittersmann
  3. 0
    pl
    1. 0
      Gunnar Bittersmann
    2. 0
      Rolf b
      1. 1
        pl
        • javascript
        • programmiertechnik
        1. 0
          TS
          1. -1
            pl
            1. 0
              TS
              1. 0
                Tabellenkalk
                1. 0
                  TS
              2. 0
                pl
                1. 0
                  TS
                  1. -2
                    pl
                    • javascript
                    • programmiertechnik
                    • zu diesem forum
                    1. 0
                      Gunnar Bittersmann
                      • zu diesem forum
  4. 1
    Matthias Apsel
    1. 0
      Matthias Scharwies
      1. 2
        JürgenB
      2. 0
        Rolf b
  5. 0
    TS
    • javascript
    • programmplanung
    1. 0

      Mathe-Quiz - Aufgabenstellung zusammengefasst

      Matthias Scharwies
      1. 0

        Mathe-Quiz - aufgabenstellung zusammengefasst

        Matthias Apsel
        1. 0
          dedlfix
          1. 0
            Matthias Apsel
          2. 0

            Mathe-Quiz - für welche Schüler?

            Matthias Scharwies
      2. 0

        Mathe-Quiz 0.3 (läuft)

        Matthias Scharwies
        1. 0
          TS
          1. 0
            Gunnar Bittersmann
            1. 0
              Tabellenkalk
              1. 0
                JürgenB
                1. 0
                  Gunnar Bittersmann
                2. 0
                  TS
        2. 0
          Tabellenkalk
          • javascript
          • programmplanung
          • rechnen