2016-07-11 22 views
-1

Ich habe eine HTML-Tabelle dynamisch aus einer Datenbank generiert. Zeilen, bei denen ein bestimmter Zellenwert derselbe ist, stellen gepaarte Daten dar, und ich möchte diese Paare durch eine leere Zeile trennen. Der beste Weg, an den ich denken kann, ist herauszufinden, wo sich dieser Wert vom vorhergehenden Wert unterscheidet. Ist das möglich?Müssen eine bestimmte Zelle in zusammenhängenden Zeilen vergleichen und Zeilen finden, wo sich der Wert dieser Zelle ändert

<table id="myTable"> 
<tr> 
    <th>Team #</th> 
    <th>Name</th> 
    <th>Age</th> 
</tr> 
<tbody> 
    <tr class="data-in-table"> 
     <td class="id">12345</td> 
     <td>Tom</td> 
     <td>46</td> 
     <tr class="data-in-table"> 
     <td class="id">12345</td> 
     <td>Dick</td> 
     <td>32</td> 
    <tr class="data-in-table"> 
     <td class="id">34567</td> 
     <td>Harry</td> 
     <td>45</td> 
    <tr class="data-in-table"> 
     <td class="id">76543</td> 
     <td>Will</td> 
     <td>45</td> 
    </tr> 
    <tr class="data-in-table"> 
     <td class="id">76543</td> 
     <td>Sam</td> 
     <td>45</td> 
    </tr> 

</tbody> 

Dies ist Code, den ich habe benachbarten Zellen gesehen zu vergleichen und versuchte, für meine Bedürfnisse zu ändern:

$("#myTable").each(function() { 

    $(this).find('tr').each(function (index) { 
    var currentRow = $(this); 
    var nextRow = $(this).next('tr').length > 0 ? $(this).next('tr') : null; 
    if (index%2==0&&nextRow && currentRow(td[0].text() !=  nextRow(td[0].text()) { 
    $('#myTable tr:next').after('<tr><td></td><td></td><td></td></tr>'); 
    } 
}); 
}); 

ich es so etwas wie folgt aussehen möchten:

Team # Name Age 
12345 Tom  46 
12345 Dick 32 

34567 Harry 45 

76543 Will 45 
76543 Sam  45 

Während die Datenbank aktualisiert wird, werden Teammitglieder immer nebeneinander positioniert, manchmal jedoch auch ein te ammate wird vor dem zweiten Teamkollegen erscheinen und der Tisch sollte das widerspiegeln.

+0

Es wird hilfreich sein, wenn Sie Ihren Code (was Sie getan haben) in die Frage für uns beantworten – theinarasu

+0

Sie benötigen mehr Details darüber, wie Sie Ihre Tabelle rendern. –

+0

Dies scheint wirklich etwas, das in einem Back-End-Dienst getan werden sollte. Wir brauchen auch mehr Informationen über Dinge wie Priorität. Zum Beispiel, wenn Will, Sam und Sid alle 45 sind, aber Sid ist im Team 12345, wo ist Sid gruppiert? –

Antwort

0

fand ich, dass dies funktioniert, durch Versuch und Irrtum:

var last = '' 
var rowCount = $('#myTable >tbody >tr').length; 
for (var i=0;i<rowCount-1;i++) { 
if (last != $('#myTable tr .id:eq('+i+')').html()) { 
var lastRow = $('#myTable tr .id:eq('+i+')') 
$(lastRow).parents('tr').before('<tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr>') 
} 
var last = $('#myTable tr .id:eq('+i+')').html() 
} 

Ich weiß nicht, ob es für eine als die Verwendung .. Anweisung auszuführen durch jede Zeile eine effizientere Art und Weise ist.

+0

Das -1 scheint ein wenig hart, wenn ich die Frage überarbeitete und die Antwort lieferte. – idman

Verwandte Themen