internet2107
Goto Top

Javascript: Tabelle - Reihen - Summe

Hallo.

Ich habe folgende Tabelle, die mit HTML bzw. Javascript automatisch erstellt wird.
Das funktioniert auch ohne Probleme.
In die jeweiligen Zellen werden die Werte je nach vorheriger Eingabe mit den entsprechenden Zahlen gefüllt.
Mein Problem besteht aber darin, dass ich gerne jeweils bei "Bilanz" die Summe der jeweiligen Reihe sehen möchte.
Ich habe die Zellen markiert, die dann jeweils zusammengezählt werden sollen.
In der grün markierten Zelle soll dann die jeweilige Summe der Reihe der markierten Zellen stehen.
Leider fehlt mir das Wissen und die Idee, wie ich in dem Fall jeweils pro Reihe ab Spalte 4 bis 10 in Spalte 11 die Summe bekomme.

bildschirmfoto 2022-05-29 um 17.11.10

Content-Key: 2930254464

Url: https://administrator.de/contentid/2930254464

Printed on: April 24, 2024 at 20:04 o'clock

Member: colinardo
Solution colinardo May 30, 2022 updated at 07:56:18 (UTC)
Goto Top
Servus,
warum summierst du die Spalten nicht einfach schon zum Zeitpunkt wenn du doch schon mit JavaScript die Tabelle baust?

Aber bitte, auch das ist natürlich auch nachträglich noch möglich, effizienter wäre es aber ehrlich gesagt schon zum Erstellungszeitpunkt.

back-to-topVariante mit plain JavaScript ohne Library
https://jsfiddle.net/v7n59xq8/1/
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>tablesum</title>
</head>
<script>
function calc(){
	document.querySelectorAll('#mytable tr:not(:first-child)').forEach(function(row){  
		var sum = 0;
		row.querySelectorAll('td:nth-child(1n+4):not(:empty)').forEach(function(col){  
			sum += parseFloat(col.innerText);
		});
		row.querySelector('td:last-child').innerText = sum.toFixed(2);  
	});
}
</script>
<body onLoad="calc()">  
<table id="mytable">  
<tr>
	<th>Header1</th>
  	<th>Header2</th>
   	<th>Header3</th>
    <th>Header4</th>
    <th>Header5</th>
    <th>Header6</th>
    <th>Header7</th>
    <th>Header8</th>
    <th>Header9</th>
    <th>Header10</th>
    <th>Sum</th>
</tr>
<tr>
	<td>2022</td>
	<td>Januar</td>
    <td></td>
  	<td>22.40</td>
	<td>11.10</td>
	<td></td>    
	<td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
</tr>
<tr>
	<td>2022</td>
	<td>Februar</td>
    <td></td>
  	<td>2.40</td>
	<td>11.10</td>
	<td></td>    
	<td>17.50</td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
</tr>
</table>
</body>
</html>
back-to-topWenn du lieber mit einer JS Library statt mit plain JavaScript arbeitest, hier noch eine Variante mit jQuery
https://jsfiddle.net/nd9uz1vf/

Grüße Uwe
Member: internet2107
internet2107 May 30, 2022 at 08:37:50 (UTC)
Goto Top
Einfach nur DANKE!!!