• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] Ergebnis von function in weiterer function aufgreifen

Sascha'AS

Neues Mitglied
Hallo zusammen,

ich bin was das Programmieren angeht ein Neuling und versuche mich aktuell an einer Tabelle mit aufeinander aufbauenden Ergebnissen.

Die erste Rechnung (=Zeile 1 im Browser) funktioniert noch wie vorgesehen.
In der zweiten Zeile möchte ich nun das Ergebnis der ersten Berechnung wieder aufgreifen und weiter verwenden.

Das funktioniert leider nicht wie vorgesehen. Ich habe bereits einige Zeit recherchiert, konnte jedoch meinen Fehler nicht finden.
Ich vermute, dass in der zweiten Funktion mit "var P1SC1 = document.getElementById("P1FC1").value;" das Ergebnis der ersten Funktion nicht korrekt aufgreift.

Wo liegt mein Fehler?

Vielen Dank im Voraus.
Sascha

---------------------------------------------------------------------------------------------------------------------------------------------
HTML:
<!DOCTYPE html>
<html>
<style>
th    {
        background-color: #666;
        color: #fff;       
      } 
      
tr {
        background-color: #fffbf0;
        color: #000;
      }
tr:nth-child(odd) {
        background-color: #e4ebf2 ;
      }     
td {
        text-align: center
      }     
table {
        width:50%
}
</style>
<head>
    <title>Test javascript</title>
     <script>
        function Calc1 () {
            var P1FC1 = document.getElementById("P1FC1").value;
            var P1SC1 = document.getElementById("P1SC1");
            var P1RE1 = document.getElementById("P1RE1").value;
                        
                if (P1RE1=="OK") {
                    var P1FC1 = 0 + 20 + P1FC1 * 10;               
                }    else {
                    var P1FC1 = P1RE1 * 10;
                }
            P1SC1.innerHTML = P1FC1;           
        }
         function Calc2 () {
            var P1SC1 = document.getElementById("P1FC1").value;
            var P1FC2 = document.getElementById("P1FC2").value;
            var P1SC2 = document.getElementById("P1SC2");
            var P1RE2 = document.getElementById("P1RE2").value;
                        
                if (P1RE2=="OK") {
                    var P1FC2 = P1SC1 + P1FC2 * 10 + 20;
                }    else {
                    var P1FC2 = P1SC1 + P1RE2 * 10;
                }
            P1SC2.innerHTML = P1FC2;
        }
    </script>
</head>
<body>
<div>
<h1    id="title"> Beispiel</h1>
Tabelle:
<p></p>
<table>
    <thead>
        <tr>
            <th></th>
            <th>Name 1</th>
            <th>RE</th>
            <th>FC</th>
         </tr>
    </thead>
    <tbody>
        <tr>
          <td>1</td>
          <td id="P1SC1" type ="number"></td><td><select type="number" id="P1RE1" onchange="Calc1 ()"><option>OK</option><option>-1</option></select></td>
          <td><select id="P1FC1" size="1"><option>-</option><option>0</option><option>1</option></select>     
        </tr>
        <tr>
          <td>2</td>
          <td id="P1SC2" type ="number"></td><td><select id="P1RE2" onchange="Calc2 ()"><option>OK</option><option>-1</option><option>-2</option></select></td>
          <td><select id="P1FC2" size="1"><option>-</option><option>0</option><option>1</option><option>2</option></select>                   
        </tr>
        <tr>
          <td>3</td>
          <td id="P1SC3" type ="number"></td><td><select id="P1RE3" onchange="Calc3 ()"><option>OK</option><option>-1</option><option>-2</option><option>-3</option></select></td>
          <td><select id="P1FC3" size="1"><option>-</option><option>0</option><option>1</option><option>2</option><option>3</option></select>                   
        </tr>
    </tbody>
    <tfoot>       
    </tfoot>
</table>
</body>
</html>
 
Werbung:
Lass mal bei der Variablendeklaration das 'var' weg!
Eine 'var P1RE1 = irgendwas' ist nur innerhalb der Funktion gültig... ohne das 'var' gilt sie aber funktionsübergreifend.
Musst dann nur aufpassen, dass du sie nicht versehentlich dann (auch) woanders nutzt.
 
Vielen Dank für die schnelle Antwort.
Auch wenn ich die Variable als globale Variable definiere verändert das das Verhalten der zweiten Berechnung nicht.
 
Werbung:
Vielen Dank für die schnelle Hilfe.
Die Tabelle ist dafür gedacht einen Punktestand für ein Spiel festzuhalten/zu ermitteln.

Die Auswahl der Ergebnisse erfolgt durch die drop-down Menüs manuell.

Zuerst trifft der Spieler eine Vorhersage welche in der Spalte "FC" festgehalten wird und nach Ende der Spielrunde wird in der Spalte "RE" das Ergebnis festgehalten. Also lag der Spieler richtig (=OK) oder lag er falsch und falls ja um wie viel.
Liegt der Spieler richtig erhält er 20 Punkte sowie 10 Punkte für jede korrekte Vorhersage.
Liegt er falsch erhält er - 10 Punkte für jede falsche Vorhersage.

Legende der ID's/Variablen:
P1SC1 = Player 1 Score 1
P1RE1 = Player 1 Result 1
P1FC1 = Player 1 Forecast 1

Die Formel soll nun auf Basis der manuell gemachten Angaben wie folgt rechnen und den Wert in der Spalte "Name 1" zurückgeben.

Berechnung in der Zeile 1:
Wenn "RE1" ist "OK", dann: 20 + Wert im Feld "FC1" * 10
Wenn "RE1" ist nicht gleich "OK", dann: Wert im Feld "RE1" * 10
Ausgabe des Ergebnisses in die Spalte "Name 1"

Code:
Code:
function Calc1 () {
            var P1FC1 = document.getElementById("P1FC1").value;
            var P1SC1 = document.getElementById("P1SC1");
            var P1RE1 = document.getElementById("P1RE1").value;
                        
                if (P1RE1=="OK") {
                    var P1FC1 = 0 + 20 + P1FC1 * 10;               
                }    else {
                    var P1FC1 = P1RE1 * 10;
                }
            P1SC1.innerHTML = P1FC1;           
        }

Das funktioniert soweit auch.

Berechnung in der Zeile 2:
Wenn RE2 ist "OK", dann: Ergebnis von Rechnung in Zeile 1 + 20 + Wert im Feld "FC2" * 10
Wenn RE2 ist nicht gleich "OK", dann: Ergebnis von Rechnung in Zeile 1 + Wert im Feld "FC2" * 10
Ausgabe des Ergebnisses in die Spalte "Name 1"

Code:
Code:
function Calc2 () {
            var P1SC1 = document.getElementById("P1SC1").value;
            var P1FC2 = document.getElementById("P1FC2").value;
            var P1SC2 = document.getElementById("P1SC2");
            var P1RE2 = document.getElementById("P1RE2").value;
                        
                if (P1RE2=="OK") {
                    var P1FC2 = P1SC1 + P1FC2 * 10 + 20;
                }    else {
                    var P1FC2 = P1SC1 + P1RE2 * 10;
                }
            P1SC2.innerHTML = P1FC2;
        }

Das funktioniert jedoch nicht mehr wie vorgesehen. Er übernimmt hier mit "var P1SC1 = document.getElementById("P1SC1").value;" nicht den in der ersten Funktion ermittelten Wert.
Wenn ich der var P1SC1 den Wert "10" (="var P1SC1 = 10;") zuweise funktioniert die Berechnung wie vorgesehen.

Ich habe in verschiedenen Konstellationen versucht durch "parseInt" zu einem Ergebnis zu kommen jedoch ohne Erfolg.

Liegt der Fehler vielleicht daran, dass ich in der ersten Berechnung den Wert mit "innerHTML" zurückschreibe und ich einen so zurückgegebenen Wert nicht mehr in einer weiteren Funktion verwenden kann?
 
Zurück
Oben