Announcement

Collapse
No announcement yet.

Frage zur Formularberechnung (Anfänger)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zur Formularberechnung (Anfänger)

    Hallo,

    Ich möchte mit dem Ohmschen Gesetz jeweils Strom, Spannung und Widerstand mittels Formulareingaben berechnen. Ich möchte auf einen "Berechne"-Button verzichten, statt dessen soll bei Eingabe in eines der drei Felder die beiden anderen Ergebnisse sofort angezeigt werden (change event?).
    Den Grundaufbau habe ich schon:

    Code:
    <form>
            <label for="spannung">Spannung U: 
              <input id="spannung" type="number" min="1" max="10000" step="1" value="1">
            Volt</label>
          <br>
          <label for="widerstand">Widerstand R: 
            <input id="widerstand" type="number" min="1" max="10000" step="1" value="1">
          Ohm</label>
        <br>
        <label for="strom">Stromstärke I: 
            <input id="strom" type="number" min="1" max="10000" step="1" value="1">
          Ampere</label>
        <br>
          </form>
    Hier das Skript:

    Code:
       var eingabe_strom  = document.getElementById('strom');
            var eingabe_spannung  = document.getElementById('spannung');
            var eingabe_widerstand=document.getElementById('widerstand');
    
    function R_aus_I_und_U() {
            var ergebnis_widerstand = eingabe_spannung.value / eingabe_strom.value;
     }
     function I_aus_R_und_U() {
            var ergebnis_strom = eingabe_spannung.value / eingabe_widerstand.value;
     }
     function U_aus_R_und_I() {
            var ergebnis_spannung = eingabe_widerstand.value * eingabe_strom.value;
     }
    Danke Walter

  • #2
    Du bindest 1 Funktion an alle Eingabefelder
    https://entwickler-forum.de/forum/we...-anf%C3%A4nger
    Dort werden immer alle 3 Werte berechnet
    Christian

    Comment


    • #3
      Mögliche Lösung

      https://ibb.co/CKm2Xf2

      Der Code wird hier nicht genommen

      EDIT
      Als Text
      https://justpaste.it/1y63r
      Zuletzt editiert von Christian Marquardt; 26.07.2021, 17:12.
      Christian

      Comment


      • #4
        Danke Christian, funktioniert soweit. Was ich aber wollte, ist dass die Ergebnisse direkt in den entsprechenden Feldern aktualisiert werden - keine separate Ausgabezeilen.
        Also wenn ich z.B. den Strom ändere, sollen die berechneten Werte direkt in den Feldern für Widerstand und Strom angezeigt werden.

        Danke
        Walter

        Comment


        • #5
          Dann musst du anders vorgehen
          Das Event muss in einer ONLOAD-Funktion des Body Tags erstmalig an die Felder gebunden werden.
          In der berechne-Funktion müssen als ersten die Events wieder von den Feldern entfernt werden.
          Dann muss die Brechung durchgeführt werden und die Ergebnisse eingetragen werden. Dann wieder die Events an die Felder binden
          Das ändern (reinschreiben der Ergebnisse) würde ja wieder ein Event auslösen und so zu einem ständigen Aufruf der Funktion führen.
          Erscheint mir nicht zielführend.
          So kann man mit den Eingabefeldern nicht arbeiten. Bestehende Werte werden einfach überschrieben. Man kann nicht mehr auf die ursprünglichen Eingaben zurückkommen
          Christian

          Comment


          • #6
            Hallo Christian, Danke für den Tipp, jedoch glaube ich nicht, dass das Eintragen in das Feld das Event wieder aufruft.
            Hier ein Beispiel, ein Temperaturkonverter, so soll es funktionieren.

            https://www.cumplidor-bau.at/temperatur/

            Danke
            Walter

            Comment


            • #7
              Na, dann trögst du das Ergebnis halt statt
              document.getElementById('ergWiderstand').innerHTML = "Widerstand "+ergebnis_widerstand;
              in das Eingabefeld ein

              document.getElementById('strom').value = ergebnis_strom;
              document.getElementById('spannung').value = ergebnis_spannung;
              document.getElementById('widerstand').value =ergebnis_widerstand;

              Christian

              Comment


              • #8
                Danke, das war einfach :-)
                Ich habe jetzt die Events von den Feldern getrennt. Weiters schreibt du:
                Das Event muss in einer ONLOAD-Funktion des Body Tags erstmalig an die Felder gebunden werden.
                In der berechne-Funktion müssen als ersten die Events wieder von den Feldern entfernt werden.
                Dann muss die Brechung durchgeführt werden und die Ergebnisse eingetragen werden. Dann wieder die Events an die Felder binden
                Wie mache ich das?

                Danke
                Walter

                Comment


                • #9
                  Na, wenn die Events keinen Einfluss auf das eintragen des Ergebnisses haben, brauchst das ja nicht
                  Christian

                  Comment


                  • #10
                    https://justpaste.it/3s0h2

                    Beachte, onload im body-Tag
                    Beachte, dass die Eingabefelder kein Event im Tag mehr haben
                    Christian

                    Comment


                    • #11
                      Funktioniert leider nicht wie gewünscht.
                      Aber trotzdem danke. Vielleicht komm ich noch drauf.

                      Walter

                      Comment


                      • #12
                        Hier schon
                        Christian

                        Comment


                        • #13
                          Wenn du z.B. nach der Eingabe das Feld verlässt, springt er wieder auf 1 zurück.
                          Ausserdem muss ich glaube ich das oninput-Event statt onchange verwenden, da ja bereits bei der Eingabe berechnet werden soll und nicht erst nach Verlassen des Feldes.

                          lg Walter

                          Comment


                          • #14
                            ok, ich habe das nur mit up/down getestet
                            Christian

                            Comment


                            • #15
                              Hmm, eine Idee hätt ich noch:
                              was ist wenn man 3 Funktionen schreibt:
                              - bei Eingabe in das Feld Spannung (input-event) wird die Funktion zur Berechnung des Widerstandes und des Stroms aufgerufen und die Werte in die entsprechenden Felder eingetragen
                              genauso geht man mit der Eingabe von Strom und Widerstand vor.
                              Der Vorteil wäre, dass das Feld, dessen Wert man ändert, durch den Funktionsaufruf nicht überschrieben wird.

                              lg Walter

                              Comment

                              Working...
                              X