Therry: Ergebnisse aus einer Schleife addieren und zusammenausgeben

Beitrag lesen

Ja, ich denke schon..

Das mit dem Lockdown ist so eine Sache, da setzt man sich eigentlich nicht so ans lernen wie man soll.

Ich habe es nun mein Projekt zusammengefasst.
Ich habe pro Zeile zwei Felder.

<?php
echo'<form name="rechner">';
for($i=1; $i<=10; $i++) {
	echo'E <input type="number" id="e_'.$i.'" oninput="Rechner1()"/>';
	echo'A <input type="number" id="a_'.$i.'" oninput="Rechner2()"/>';
	echo'<hr/>';
	}
echo'<input type="text" id="ausgabe" oninput="Rechner1()">';
echo'</form>';		
?>

Wenn man in das linke schreibt wird es *12 genommen und im zweiten Feld das Ergebnis ausgegeben.

Wenn man in das rechte schreibt wir /12 genommen und das Ergebnis im linken Feld ausgegeben. Da es dann zu Kommazahlen kommt, habe ich eine Rundung eingebaut.

Nun werden alle rechten Ergebnisse zusammengezählt und am Ende der Eingaben in einem weiteren INPUT Feld ausgegeben.

Da ich dann immer eine NaN Meldung kam, habe ich in einer Schleife wenn ein Feld leer ist eine 0 gesetzt. So kommt es zu keiner Meldung und es wird auch sofort ausgegeben.

Jetzt habe ich aber 1 Fehler und einen kleinen Fehler die nicht hinhauen.

  1. Es sollen ja alle rechten Wert zusammengezählt werden und automatisch am Schluss ausgegeben werden. Das klappt, solange ich in das linke Feld schreibe und das Ergebnis im rechten ausgegeben wird. Schreibe ich dagegen ins rechte Feld, kommt zwar im linken das Ergebnis, aber es wird im rechten nicht weiter addiert. Obwohl ich dachte wenn ich oninput hernehme, wird jede Änderung im Feld erkannt.

  2. Meine Rechnung in der alle werte zusammengefasst werden, sieht mehr als bescheiden aus. Aber sie in einer Schleife zusammenzufassen, denke ich ist auch nicht der Weisheit letzter Schluss?

Auch stellt sich weiter die Frage für mich muss ich immer die beiden funktionen aufrufen Rechner1 Rechner2 ? Weil wäre es nicht einfach zum übergabe der Variable, es in eienr einzigen Funktion zu haben.



function Rechner1() {
	let aWerte = [ ]; 
	for (let i=1; i<=10; i++) {
	aWerte[i] = document.rechner["e_"+i].valueAsNumber * 12;
	   document.rechner["a_"+i].value = Math.round(aWerte[i]);
	}

	for (let i=0; i<aWerte.length; i++) {
		if(isNaN(aWerte[i])){aWerte[i]=0;} 
		}

document.rechner["ausgabe"].value =	aWerte[1]+aWerte[2]+aWerte[3]+aWerte[4]+aWerte[5]+aWerte[6]+aWerte[7]+aWerte[8]+aWerte[9]+aWerte[10];
}

function Rechner2() {
	let aWerte = [ ]; 
	for (let i=1; i<=10; i++) {
	   aWerte[i] = document.rechner["a_"+i].valueAsNumber / 12;
	   document.rechner["e_"+i].value = Math.round(aWerte[i]);
	}	

}