Hallo Martin,
sorry, nein, davon rate ich ab. Es ist undefiniert, in welcher Reihenfolge die Behandlungsroutinen für die DOM Ereignisse aufgerufen werden. Demzufolge sollte sich auch nicht eine Behandlungsroutine auf Ergebnisse einer anderen verlassen. Solcher Code ist zerbrechlich.
Abgesehen davon hilft ihm die bereits ermittelte Spaltensumme nichts für die Zeilensumme der Zeilen 1 bis 3.
Wenn es - was bisher nicht gezeigt wurde - eine Behandlungsroutine gibt, die bei einer Zelländerung die Zeilensumme bildet und die Zeilensumme in ein Ausgabefeld schreibt, dann sähe das anders aus. Allerdings sollte diese Abhängigkeit dann ausdrücklich programmiert werden.
Wenn beispielsweise jedes Eingabefeld eine Zeilen- und eine Spaltensumme zu aktualisieren hat, dann würde ich das so steuern (mit direktem oninput Attribut)
<input type="number" id="EingabeS5Z7" oninput="cellChange(5,7)">
Mit meinen vorhin dargestellten Helpern wär's dann so:
function cellChange(spalte, zeile) {
const zsFeld = getZeilensummeFeld(zeile),
ssFeld = getSpaltensummeFeld(spalte):
zsFeld.value = getZeilensumme(zeile);
ssFeld.value = getSpaltensumme(spalte);
if (zeile >= 1 && zeile <= 3) {
// **jetzt** kann auf die Feldinhalte der drei
// Zeilensummenfelder zurückgegriffen werden
}
}
getZeilensummeFeld und getSpaltensummeFeld sind analog zu getEingabefeld aus dem anderen Beitrag zu bauen.
Aber das ist jetzt nur skizziert, da muss man vermutlich noch etwas mehr Hirnschmalz reinstecken, ohne Franz dabei zu überfordern.
Eine Sache wäre vermutlich eine unaufdringliche Registrierung des oninput Events auf dem Container für alle diese Felder, und die Ermittlung von Zeile und Spalte aus der ID dieses Events. Das würde das HTML deutlich verschlanken und änderungsfreundlicher machen.
Rolf
sumpsi - posui - obstruxi