2016-05-26 14 views
1

Ich habe eine HTML-Tabelle, die eine Spalte auf der linken Seite (Elternklassen) und Spalten/Zeilen auf der rechten Seite (Kinderklassen) hat. Die erste Spalte erstreckt sich über mehrere Zeilen, die erste Spalte über mehrere Zeilen. Ich versuche, jede Zeile, die sich über einem Elternteil befindet, in das darunterliegende Elternteil einzufügen. Beispiel: Zwischensumme über Gruppe 1 wird mit Gruppe 1 anstatt mit einer eigenen Zeile zusammengeführt. Ein wenig seltsam, so hier zu erklären, ist mein jsfiddle Link: https://jsfiddle.net/khemikal/ry5p4842/Jede Zeile über Eltern mit Eltern/Kinder zusammenführen?

Hier ist meine Funktion:

$(document).ready(function() { 
    $(".parent").each(function(index, element) { 
     var subTotal1 = 0; 
     var subTotal2 = 0; 
     var subTotal3 = 0; 
     var numRows = parseInt($(this).attr("rowspan")); 
     var firstRow = $(this).parent(); 
     var currentRow = firstRow; 
     for (i = 0; i < numRows; i++) { 
     subTotal1 += parseInt($(currentRow.children(".child")[0]).text()); 
     subTotal2 += parseInt($(currentRow.children(".child")[1]).text()); 
     subTotal3 += parseInt($(currentRow.children(".child")[2]).text()); 
     currentRow = currentRow.next("tr"); 
     } 
     firstRow.before('<tr><td></td><td class="sub0">Sub Total</td><td class="sub1">' + subTotal2 + '</td><td class="sub2">' + subTotal3 + '</td></tr>'); 
    }); 
    }); 

Jede Hilfe oder Rat dies auf das Erreichen würde geschätzt.

Antwort

1

Ich habe Ihren Code genommen und einfach neu angeordnet.

Ich habe die tr am Ende platziert, jedoch kann dies leicht wieder nach oben verschoben werden.

Was Sie wollten, war die Erweiterung der Gruppenspanne. Da Sie bereits die numRows Variable haben, fügte ich einfach 1 hinzu und wandte es erneut an die Gruppe an.

Editieren Sie um es für mehrere Gruppen gelten, müssen wir die lastRow jeder Gruppe bestimmen. Ich habe das mit der benannten Variable gemacht. Jetzt können wir sicherstellen, dass wir die Zwischensumme an die letzte Zeile anhängen, bevor wir den Wert rowspan der Zeile erhöhen.

https://jsfiddle.net/vhzjwxkt/

+0

fast auf dem Niveau mit mir zu erreichen bin mit dem Ziel, vielleicht dieses größer Beispiel? https://jsfiddle.net/khemikal/r5xm9act/77/ – khemikal

+0

Benötigen Sie * die Zwischensummenzeile, um an der Spitze jeder Gruppe zu sein? Oder ist der Boden akzeptabel? –

+0

entweder funktioniert es! – khemikal

1

Ich würde einen Kommentar hinterlassen, aber ich habe noch nicht genug rep für das.

Ich denke, Sie müssen mehr Informationen zur Verfügung stellen. Ich bin nicht sicher, warum Sie .before verwenden, wenn Sie versuchen, es an einer bestimmten Stelle zu platzieren. Ich bin mir auch nicht sicher, warum Sie auf diese Weise eine Eltern-Kind-Struktur organisieren würden. Wenn es nach mir ginge, es zu organisieren, würde ich Datenattribute verwenden, um es zusammenzufassen, oder ein anderes Attribut (da dies außerhalb einer normalen DOM-Eltern-Kind-Beziehung liegt).

Es klingt wie Sie müssen durch die Zeilen, nicht die Eltern Schleife. An diesem Punkt würde ich die übergeordnete> untergeordnete Struktur basierend auf der Reihenfolge der Zeilen mithilfe von .hasClass organisieren, um zu überprüfen.

Geben Sie mir weitere Informationen und ich werde versuchen zu helfen, ich werde diese Antwort revidieren.

Verwandte Themen