Regina Schlauklug: Javaskript für eigene Lernsoftware

Beitrag lesen

Hi,

mir war etwas langweilig und habe das mal versucht zu basteln:

<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <title>Lern-Dingens</title>
  <style>
    /* Formulare, die nicht der aktuelle Schritt sind, sollen ausgeblendet werden */
    form:not(.currentStep) {
      display: none;
    }
    #success:not(.currentStep) {
      display: none;
    }

    /* Animation, die das Bild ausblendet */
    @keyframes fadeOut {
      from {
        opacity: 1;
      }
      to {
        opacity: 0;
      }
    }
    /* Zuweisen der animation an das Bild. Wichtig ist hier das delay, welches angibt nach wie vielen Sekunden die animation ausgeführt werden soll */
    .currentStep img {
      animation-duration: .2s;
      animation-name: fadeOut;
      animation-iteration-count: 1;
      animation-delay: 5s;
      animation-fill-mode: forwards;
      display: block;
    }
  </style>
</head>
<body>
  <!-- Ein Formular pro Bild/Eingabefeld-Kombination -->
  <!-- Das "Startformular" hat die id "firstStep" und standardmäßig die class "currentStep". Jedes Formular hat novalidate, um die browserseitige validierung zu deaktivieren (wir wollen das selber mit JS machen) -->
  <form id="firstStep" class="currentStep" novalidate>
    <!-- das Bild -->
    <img src="http://via.placeholder.com/350x150" />
    <!-- das eingabefeld, im pattern-Attribut steht der richtige eingabewert (Achtung: Das ist ein regulärer Ausdruck, d.h. manche Zeichen haben eine besondere Bedeutung. Solange nur Ziffern verwendet werden funktioniert das wie erwartet) -->
    <input type="text" pattern="1" required/>
    <!-- Button zum bestätigen der eingegebenen Antwort. Hier mit der Lösung in klammern dahinter, die sollte man dann entfernen :) -->
    <button type="submit">Bestätigen (1)</button>
  </form>
  <form novalidate>
    <img src="http://via.placeholder.com/350x150" />
    <input type="text" pattern="2" required/>
    <button type="submit">Bestätigen (2)</button>
  </form>
  <form novalidate>
    <img src="http://via.placeholder.com/350x150" />
    <input type="text" pattern="3" required/>
    <button type="submit">Bestätigen (3)</button>
  </form>
  <div id="success">Alles richtig!</div>

  <script>
    // immer wenn ein formular abgeschickt wird, soll unten stehende funktion ausgeführt werden
    document.body.addEventListener('submit', e => {
      // verhindere dass browser versucht, das formular an einen server zu schicken
      e.preventDefault();
      // mache aktuelles formular inaktiv
      e.target.className = '';
      // prüfe, ob eingabewert im input korrekt ist
      if (e.target.querySelector('input').checkValidity()) {
        // falls ja, mache nächstes Formular aktiv
        e.target.nextElementSibling.className = 'currentStep';
      } else {
        // eingabe war falsch, mache erstes formular aktiv
        // aber erst nach 1ms, um das einblenden/ausblenden des bildes neu anzustoßen
        window.setTimeout(() => {
          document.getElementById('firstStep').className = 'currentStep';
        }, 1);
      }
      // setze formulardaten zurück (falls das gleiche formular später wieder angezeigt wird, sollte die antwort nicht schon drin stehen)
      e.target.reset();
    });
  </script>
</body>
</html>
0 62

Javaskript für eigene Lernsoftware

Jenni
  • html
  • javascript
  1. 0
    TS
    • html
    • javascript
    • projekt
    1. 0
      Jenni
      1. 1
        TS
        • menschelei
        • projekt
        1. 0
          Jenni
          1. 0

            Didaktik erarbeiten und in der Software abbilden

            TS
            1. 0
              Jenni
              1. 0
                TS
              2. 0
                Rolf B
  2. 3
    Rolf B
  3. -1
    hmm
    1. 0
      Gunnar Bittersmann
      • javascript
      1. 0
        hmm
        1. 0
          Gunnar Bittersmann
          1. 0
            Mitleser
            1. 0
              Gunnar Bittersmann
              1. 0
                Mitleser
        2. 0
          Robert B.
          • javascript
          • jquery
          • meinung
          1. 1
            JürgenB
            • meinung
            • menschelei
            1. 0
              Tabellenkalk
              1. 0
                Rolf B
                1. 3
                  MudGuard
                  1. 0
                    Robert B.
                    • menschelei
                  2. 0
                    kackb00n
                  3. 0
                    Rolf B
                    1. 0
                      Auge
                    2. 0
                      Robert B.
                      • meinung
                      • menschelei
                      • zu diesem forum
                      1. 0
                        Gunnar Bittersmann
                        1. 0
                          Robert B.
                        2. 0
                          Tabellenkalk
                          1. 0
                            Rolf B
    2. 0
      Rolf B
      1. 0
        JürgenB
      2. 0
        hmm
        1. 0
          Tabellenkalk
          1. 0
            hmm
            1. 0
              Gunnar Bittersmann
              • menschelei
              1. 0
                hmm
                1. 0
                  Matthias Apsel
          2. 0
            MudGuard
            1. 0
              Tabellenkalk
              1. 0
                Gunnar Bittersmann
                • css
                • menschelei
        2. 0
          Gunnar Bittersmann
          • humor
          • menschelei
        3. 2
          Rolf B
          1. 0
            Jenni
  4. 0
    Felix Riesterer
    1. 0
      Jenni
      1. 0
        Felix Riesterer
        1. 0
          Jenni
          1. 0
            Felix Riesterer
            1. 0
              Jenni
              1. 0
                JürgenB
  5. 0
    marctrix
    • html
    • javascript
    • literatur
  6. 1
    Regina Schlauklug
    1. 0
      hmm
      1. 0
        Gunnar Bittersmann
        1. 0
          hmm
          1. 1

            Button? button!

            Gunnar Bittersmann
            • html
          2. 0
            Matthias Apsel
    2. 0
      Jenni
      1. 0
        Regina Schlauklug
  7. 0
    Gunnar Bittersmann