JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css">
<script src="https://code.jquery.com/jquery-3.4.1.slim.js"></script>
<form name="formular1" oninput="j_calculate(event)">
<div class="input-group">
<div class="titel">Zeile1</div>
<div class="wert"><input id="EingabeZ1S2" value="" /></div>
<div class="wert"><input id="EingabeZ1S3" value="" /></div>
<div class="wert"><input id="EingabeZ1S4" value="" /></div>
<div class="summe"><input id="SummeZ1"></div>
</div>
<div class="input-group">
<div class="titel">Zeile2</div>
<div class="wert"><input id="EingabeZ2S2" value="" /></div>
<div class="wert"><input id="EingabeZ2S3" value="" /></div>
<div class="wert"><input id="EingabeZ2S4" value="" /></div>
<div class="summe"><input id="SummeZ2"></div>
</div>
<div class="input-group">
<div class="titel">Zeile3</div>
<div class="wert"><input id="EingabeZ3S2" value="" /></div>
<div class="wert"><input id="EingabeZ3S3" value="" /></div>
<div class="wert"><input id="EingabeZ3S4" value="" /></div>
<div class="summe"><input id="SummeZ3"></div>
</div>
<div class="input-group">
<div class="titel">Erg: 4</div>
<div class="wert"><input id="SummeS2" value=""/></div>
<div class="wert"><input id="SummeS3" value=""/></div>
<div class="wert"><input id="SummeS4" value="" /></div>
<div class="summe"><input id="SummeTotal"></div>
</div>
</form>
JavaScript
function getEingabefeld(spalte, zeile) {
return document.getElementById("EingabeZ"+zeile+"S"+spalte);
}
function getSpaltensummenfeld(spalte) {
return document.getElementById("SummeS"+spalte);
}
function getZeilensummenfeld(spalte) {
return document.getElementById("SummeZ"+spalte);
}
function getEingabewert(spalte, zeile) {
return getInputAsFloat(getEingabefeld(spalte, zeile));
}
const anzahlSpalten=4,
anzahlZeilen=3;
function getSpaltensumme(spalte) {
let summe=0;
for (let zeile=1; zeile<=anzahlZeilen; zeile++) {
summe += getEingabewert(spalte, zeile);
}
return summe;
}
function getZeilensumme(zeile) {
let summe=0;
for (let spalte=1; spalte<=anzahlSpalten; spalte++) {
summe += getEingabewert(spalte, zeile);
}
return summe;
}
function getInputAsFloat(element)
{ return (element
? parseFloat(element.value.replace(/[^0-9 ]/g, "")) || 0
: 0);
}
function j_calculate(e) {
console.log("calculate " + e.target.id);
for (spalte = 1; spalte <= anzahlSpalten; spalte++) {
getSpaltensummenfeld(spalte).value = getSpaltensumme(spalte);
}
let total = 0;
for (zeile = 1; zeile <= anzahlZeilen; zeile++) {
let zeilensumme = getZeilensumme(zeile);
getZeilensummenfeld(zeile).value = zeilensumme;
total += zeilensumme;
}
document.getElementById("SummeTotal").value = total;
}