Merge table rows with jQuery
up vote
1
down vote
favorite
I have a table that have same values for each person, so I need to merge those rows for that person with same values. In some cases all rows with same value are merging but they are repeated with same values. In some other cases courses with same name are merged and this not right as I mentioned before only same values for one person should merge,
(so sorry for my bad English, don't know how to explain this I hope snippet show you enough)
Any solution for this?
function groupTable($rows, startIndex, total)
if (total === 0)
return;
var i, currentIndex = startIndex,
count = 1,
lst = ;
var tds = $rows.find('td:eq(' + currentIndex + ')');
var ctrl = $(tds[0]);
lst.push($rows[0]);
for (i = 1; i <= tds.length; i++)
if (ctrl.attr("id") == $(tds[i]).attr("id"))
count++;
$(tds[i]).addClass('deleted');
lst.push($rows[i]);
else
if (count > 1)
ctrl.attr('rowspan', count);
groupTable($(lst), startIndex + 1, total - 1)
count = 1;
lst = ;
ctrl = $(tds[i]);
lst.push($rows[i]);
groupTable($('#myTable tr:has(td)'), 0, 14);
$('#myTable .deleted').remove();
<table class="table table-striped border-top table-bordered" id="myTable">
<thead>
<tr id="th1" style="background:#d3d3d3 ;">
<th>#</th>
<th>Grade</th>
<th>Teacher</th>
<th>Curse</th>
<th colspan="3">Morning</th>
<th colspan="3">Evening</th>
<th colspan="2" style="font-size: 12px;">Weekly hour</th>
<th>sum</th>
<th>-</th>
</tr>
<tr id="th2">
<th></th>
<th></th>
<th></th>
<th></th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>Morning</th>
<th>Evening</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody id="details_view">
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">1</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">Electric</td>
<td id="prof7" data-time="morning_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="Electric" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="Electric" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="Electric" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">2</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">3</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">۳۰</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id30" class "ids"="" data-id="ids">4</td>
<td id="prof30">Mr</td>
<td id="prof30">Robert Anderson</td>
<td id="prof12" style="font-size: 12px;">Course2 </td>
<td id="prof12" data-time="morning_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_practical" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_practical" data-crs="Course2" data-prof="Robert Anderson">6</td>
<td id="prof12" data-time="evening_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="sob12" style="background:#d3d3d3 ;">0</td>
<td id="asr12" style="background:#d3d3d3 ;">6</td>
<td id="prof12">6</td>
<td id="prof12" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">5</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">6</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">7</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
javascript jquery html-table
New contributor
|
show 2 more comments
up vote
1
down vote
favorite
I have a table that have same values for each person, so I need to merge those rows for that person with same values. In some cases all rows with same value are merging but they are repeated with same values. In some other cases courses with same name are merged and this not right as I mentioned before only same values for one person should merge,
(so sorry for my bad English, don't know how to explain this I hope snippet show you enough)
Any solution for this?
function groupTable($rows, startIndex, total)
if (total === 0)
return;
var i, currentIndex = startIndex,
count = 1,
lst = ;
var tds = $rows.find('td:eq(' + currentIndex + ')');
var ctrl = $(tds[0]);
lst.push($rows[0]);
for (i = 1; i <= tds.length; i++)
if (ctrl.attr("id") == $(tds[i]).attr("id"))
count++;
$(tds[i]).addClass('deleted');
lst.push($rows[i]);
else
if (count > 1)
ctrl.attr('rowspan', count);
groupTable($(lst), startIndex + 1, total - 1)
count = 1;
lst = ;
ctrl = $(tds[i]);
lst.push($rows[i]);
groupTable($('#myTable tr:has(td)'), 0, 14);
$('#myTable .deleted').remove();
<table class="table table-striped border-top table-bordered" id="myTable">
<thead>
<tr id="th1" style="background:#d3d3d3 ;">
<th>#</th>
<th>Grade</th>
<th>Teacher</th>
<th>Curse</th>
<th colspan="3">Morning</th>
<th colspan="3">Evening</th>
<th colspan="2" style="font-size: 12px;">Weekly hour</th>
<th>sum</th>
<th>-</th>
</tr>
<tr id="th2">
<th></th>
<th></th>
<th></th>
<th></th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>Morning</th>
<th>Evening</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody id="details_view">
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">1</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">Electric</td>
<td id="prof7" data-time="morning_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="Electric" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="Electric" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="Electric" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">2</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">3</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">۳۰</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id30" class "ids"="" data-id="ids">4</td>
<td id="prof30">Mr</td>
<td id="prof30">Robert Anderson</td>
<td id="prof12" style="font-size: 12px;">Course2 </td>
<td id="prof12" data-time="morning_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_practical" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_practical" data-crs="Course2" data-prof="Robert Anderson">6</td>
<td id="prof12" data-time="evening_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="sob12" style="background:#d3d3d3 ;">0</td>
<td id="asr12" style="background:#d3d3d3 ;">6</td>
<td id="prof12">6</td>
<td id="prof12" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">5</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">6</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">7</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
javascript jquery html-table
New contributor
But the snippet example seems to give the right output. Could you instead give a snippet example where it goes wrong? If the snippet output is wrong, please add the table that you expect as output.
– trincot
2 days ago
This snippet already has wrong result. look at "Mr John Doe" in html code. He has 2 different courses but in results its not shown.
– John
2 days ago
So you want only rows to be removed when they are completely the same? Or only when some columns are the same?
– trincot
2 days ago
I want all rows for one person with same value to be merged.
– John
yesterday
What is "with same value"? Which value(s)? All rows have at least one cell different. For instance, the first cell (the "#" column) is always different in your example. Others have a different value in the "sum" column (like row 2 and 3).... It is not clear what you mean with "with same value".
– trincot
yesterday
|
show 2 more comments
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have a table that have same values for each person, so I need to merge those rows for that person with same values. In some cases all rows with same value are merging but they are repeated with same values. In some other cases courses with same name are merged and this not right as I mentioned before only same values for one person should merge,
(so sorry for my bad English, don't know how to explain this I hope snippet show you enough)
Any solution for this?
function groupTable($rows, startIndex, total)
if (total === 0)
return;
var i, currentIndex = startIndex,
count = 1,
lst = ;
var tds = $rows.find('td:eq(' + currentIndex + ')');
var ctrl = $(tds[0]);
lst.push($rows[0]);
for (i = 1; i <= tds.length; i++)
if (ctrl.attr("id") == $(tds[i]).attr("id"))
count++;
$(tds[i]).addClass('deleted');
lst.push($rows[i]);
else
if (count > 1)
ctrl.attr('rowspan', count);
groupTable($(lst), startIndex + 1, total - 1)
count = 1;
lst = ;
ctrl = $(tds[i]);
lst.push($rows[i]);
groupTable($('#myTable tr:has(td)'), 0, 14);
$('#myTable .deleted').remove();
<table class="table table-striped border-top table-bordered" id="myTable">
<thead>
<tr id="th1" style="background:#d3d3d3 ;">
<th>#</th>
<th>Grade</th>
<th>Teacher</th>
<th>Curse</th>
<th colspan="3">Morning</th>
<th colspan="3">Evening</th>
<th colspan="2" style="font-size: 12px;">Weekly hour</th>
<th>sum</th>
<th>-</th>
</tr>
<tr id="th2">
<th></th>
<th></th>
<th></th>
<th></th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>Morning</th>
<th>Evening</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody id="details_view">
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">1</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">Electric</td>
<td id="prof7" data-time="morning_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="Electric" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="Electric" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="Electric" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">2</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">3</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">۳۰</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id30" class "ids"="" data-id="ids">4</td>
<td id="prof30">Mr</td>
<td id="prof30">Robert Anderson</td>
<td id="prof12" style="font-size: 12px;">Course2 </td>
<td id="prof12" data-time="morning_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_practical" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_practical" data-crs="Course2" data-prof="Robert Anderson">6</td>
<td id="prof12" data-time="evening_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="sob12" style="background:#d3d3d3 ;">0</td>
<td id="asr12" style="background:#d3d3d3 ;">6</td>
<td id="prof12">6</td>
<td id="prof12" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">5</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">6</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">7</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
javascript jquery html-table
New contributor
I have a table that have same values for each person, so I need to merge those rows for that person with same values. In some cases all rows with same value are merging but they are repeated with same values. In some other cases courses with same name are merged and this not right as I mentioned before only same values for one person should merge,
(so sorry for my bad English, don't know how to explain this I hope snippet show you enough)
Any solution for this?
function groupTable($rows, startIndex, total)
if (total === 0)
return;
var i, currentIndex = startIndex,
count = 1,
lst = ;
var tds = $rows.find('td:eq(' + currentIndex + ')');
var ctrl = $(tds[0]);
lst.push($rows[0]);
for (i = 1; i <= tds.length; i++)
if (ctrl.attr("id") == $(tds[i]).attr("id"))
count++;
$(tds[i]).addClass('deleted');
lst.push($rows[i]);
else
if (count > 1)
ctrl.attr('rowspan', count);
groupTable($(lst), startIndex + 1, total - 1)
count = 1;
lst = ;
ctrl = $(tds[i]);
lst.push($rows[i]);
groupTable($('#myTable tr:has(td)'), 0, 14);
$('#myTable .deleted').remove();
<table class="table table-striped border-top table-bordered" id="myTable">
<thead>
<tr id="th1" style="background:#d3d3d3 ;">
<th>#</th>
<th>Grade</th>
<th>Teacher</th>
<th>Curse</th>
<th colspan="3">Morning</th>
<th colspan="3">Evening</th>
<th colspan="2" style="font-size: 12px;">Weekly hour</th>
<th>sum</th>
<th>-</th>
</tr>
<tr id="th2">
<th></th>
<th></th>
<th></th>
<th></th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>Morning</th>
<th>Evening</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody id="details_view">
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">1</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">Electric</td>
<td id="prof7" data-time="morning_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="Electric" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="Electric" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="Electric" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">2</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">3</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">۳۰</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id30" class "ids"="" data-id="ids">4</td>
<td id="prof30">Mr</td>
<td id="prof30">Robert Anderson</td>
<td id="prof12" style="font-size: 12px;">Course2 </td>
<td id="prof12" data-time="morning_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_practical" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_practical" data-crs="Course2" data-prof="Robert Anderson">6</td>
<td id="prof12" data-time="evening_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="sob12" style="background:#d3d3d3 ;">0</td>
<td id="asr12" style="background:#d3d3d3 ;">6</td>
<td id="prof12">6</td>
<td id="prof12" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">5</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">6</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">7</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
function groupTable($rows, startIndex, total)
if (total === 0)
return;
var i, currentIndex = startIndex,
count = 1,
lst = ;
var tds = $rows.find('td:eq(' + currentIndex + ')');
var ctrl = $(tds[0]);
lst.push($rows[0]);
for (i = 1; i <= tds.length; i++)
if (ctrl.attr("id") == $(tds[i]).attr("id"))
count++;
$(tds[i]).addClass('deleted');
lst.push($rows[i]);
else
if (count > 1)
ctrl.attr('rowspan', count);
groupTable($(lst), startIndex + 1, total - 1)
count = 1;
lst = ;
ctrl = $(tds[i]);
lst.push($rows[i]);
groupTable($('#myTable tr:has(td)'), 0, 14);
$('#myTable .deleted').remove();
<table class="table table-striped border-top table-bordered" id="myTable">
<thead>
<tr id="th1" style="background:#d3d3d3 ;">
<th>#</th>
<th>Grade</th>
<th>Teacher</th>
<th>Curse</th>
<th colspan="3">Morning</th>
<th colspan="3">Evening</th>
<th colspan="2" style="font-size: 12px;">Weekly hour</th>
<th>sum</th>
<th>-</th>
</tr>
<tr id="th2">
<th></th>
<th></th>
<th></th>
<th></th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>Morning</th>
<th>Evening</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody id="details_view">
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">1</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">Electric</td>
<td id="prof7" data-time="morning_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="Electric" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="Electric" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="Electric" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">2</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">3</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">۳۰</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id30" class "ids"="" data-id="ids">4</td>
<td id="prof30">Mr</td>
<td id="prof30">Robert Anderson</td>
<td id="prof12" style="font-size: 12px;">Course2 </td>
<td id="prof12" data-time="morning_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_practical" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_practical" data-crs="Course2" data-prof="Robert Anderson">6</td>
<td id="prof12" data-time="evening_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="sob12" style="background:#d3d3d3 ;">0</td>
<td id="asr12" style="background:#d3d3d3 ;">6</td>
<td id="prof12">6</td>
<td id="prof12" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">5</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">6</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">7</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
function groupTable($rows, startIndex, total)
if (total === 0)
return;
var i, currentIndex = startIndex,
count = 1,
lst = ;
var tds = $rows.find('td:eq(' + currentIndex + ')');
var ctrl = $(tds[0]);
lst.push($rows[0]);
for (i = 1; i <= tds.length; i++)
if (ctrl.attr("id") == $(tds[i]).attr("id"))
count++;
$(tds[i]).addClass('deleted');
lst.push($rows[i]);
else
if (count > 1)
ctrl.attr('rowspan', count);
groupTable($(lst), startIndex + 1, total - 1)
count = 1;
lst = ;
ctrl = $(tds[i]);
lst.push($rows[i]);
groupTable($('#myTable tr:has(td)'), 0, 14);
$('#myTable .deleted').remove();
<table class="table table-striped border-top table-bordered" id="myTable">
<thead>
<tr id="th1" style="background:#d3d3d3 ;">
<th>#</th>
<th>Grade</th>
<th>Teacher</th>
<th>Curse</th>
<th colspan="3">Morning</th>
<th colspan="3">Evening</th>
<th colspan="2" style="font-size: 12px;">Weekly hour</th>
<th>sum</th>
<th>-</th>
</tr>
<tr id="th2">
<th></th>
<th></th>
<th></th>
<th></th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>theory</th>
<th>Practical</th>
<th>free</th>
<th>Morning</th>
<th>Evening</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody id="details_view">
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">1</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">Electric</td>
<td id="prof7" data-time="morning_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="Electric" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="Electric" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="Electric" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="Electric" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">2</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">30</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id7" class "ids"="" data-id="ids">3</td>
<td id="prof7">Mr</td>
<td id="prof7">John Doe</td>
<td id="prof7" style="font-size: 12px;">course2</td>
<td id="prof7" data-time="morning_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="morning_practical" data-crs="course2" data-prof="John Doe">18</td>
<td id="prof7" data-time="morning_free" data-crs="course2" data-prof="John Doe">12</td>
<td id="prof7" data-time="evening_theory" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_practical" data-crs="course2" data-prof="John Doe">0</td>
<td id="prof7" data-time="evening_free" data-crs="course2" data-prof="John Doe">0</td>
<td id="sob7" style="background:#d3d3d3 ;">30</td>
<td id="asr7" style="background:#d3d3d3 ;">0</td>
<td id="prof7">۳۰</td>
<td id="prof7" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id30" class "ids"="" data-id="ids">4</td>
<td id="prof30">Mr</td>
<td id="prof30">Robert Anderson</td>
<td id="prof12" style="font-size: 12px;">Course2 </td>
<td id="prof12" data-time="morning_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_practical" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="morning_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_theory" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="prof12" data-time="evening_practical" data-crs="Course2" data-prof="Robert Anderson">6</td>
<td id="prof12" data-time="evening_free" data-crs="Course2" data-prof="Robert Anderson">0</td>
<td id="sob12" style="background:#d3d3d3 ;">0</td>
<td id="asr12" style="background:#d3d3d3 ;">6</td>
<td id="prof12">6</td>
<td id="prof12" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">5</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">6</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
<tr id="p">
<td id="id6" class "ids"="" data-id="ids">7</td>
<td id="prof6">Mr</td>
<td id="prof6">Jack Hulk</td>
<td id="prof5" style="font-size: 12px;">Course3</td>
<td id="prof5" data-time="morning_theory" data-crs="Course3" data-prof="Jack Hulk">8</td>
<td id="prof5" data-time="morning_practical" data-crs="Course3" data-prof="Jack Hulk">12</td>
<td id="prof5" data-time="morning_free" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_theory" data-crs="Course3" data-prof="Jack Hulk">2</td>
<td id="prof5" data-time="evening_practical" data-crs="Course3" data-prof="Jack Hulk">4</td>
<td id="prof5" data-time="evening_free" data-crs="Course3" data-prof="Jack Hulk">18</td>
<td id="sob5" style="background:#d3d3d3 ;">22</td>
<td id="asr5" style="background:#d3d3d3 ;">24</td>
<td id="prof5">46</td>
<td id="prof5" style="width: 160px;"></td>
</tr>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
javascript jquery html-table
javascript jquery html-table
New contributor
New contributor
edited yesterday
Brian Tompsett - 汤莱恩
4,153133699
4,153133699
New contributor
asked 2 days ago
John
61
61
New contributor
New contributor
But the snippet example seems to give the right output. Could you instead give a snippet example where it goes wrong? If the snippet output is wrong, please add the table that you expect as output.
– trincot
2 days ago
This snippet already has wrong result. look at "Mr John Doe" in html code. He has 2 different courses but in results its not shown.
– John
2 days ago
So you want only rows to be removed when they are completely the same? Or only when some columns are the same?
– trincot
2 days ago
I want all rows for one person with same value to be merged.
– John
yesterday
What is "with same value"? Which value(s)? All rows have at least one cell different. For instance, the first cell (the "#" column) is always different in your example. Others have a different value in the "sum" column (like row 2 and 3).... It is not clear what you mean with "with same value".
– trincot
yesterday
|
show 2 more comments
But the snippet example seems to give the right output. Could you instead give a snippet example where it goes wrong? If the snippet output is wrong, please add the table that you expect as output.
– trincot
2 days ago
This snippet already has wrong result. look at "Mr John Doe" in html code. He has 2 different courses but in results its not shown.
– John
2 days ago
So you want only rows to be removed when they are completely the same? Or only when some columns are the same?
– trincot
2 days ago
I want all rows for one person with same value to be merged.
– John
yesterday
What is "with same value"? Which value(s)? All rows have at least one cell different. For instance, the first cell (the "#" column) is always different in your example. Others have a different value in the "sum" column (like row 2 and 3).... It is not clear what you mean with "with same value".
– trincot
yesterday
But the snippet example seems to give the right output. Could you instead give a snippet example where it goes wrong? If the snippet output is wrong, please add the table that you expect as output.
– trincot
2 days ago
But the snippet example seems to give the right output. Could you instead give a snippet example where it goes wrong? If the snippet output is wrong, please add the table that you expect as output.
– trincot
2 days ago
This snippet already has wrong result. look at "Mr John Doe" in html code. He has 2 different courses but in results its not shown.
– John
2 days ago
This snippet already has wrong result. look at "Mr John Doe" in html code. He has 2 different courses but in results its not shown.
– John
2 days ago
So you want only rows to be removed when they are completely the same? Or only when some columns are the same?
– trincot
2 days ago
So you want only rows to be removed when they are completely the same? Or only when some columns are the same?
– trincot
2 days ago
I want all rows for one person with same value to be merged.
– John
yesterday
I want all rows for one person with same value to be merged.
– John
yesterday
What is "with same value"? Which value(s)? All rows have at least one cell different. For instance, the first cell (the "#" column) is always different in your example. Others have a different value in the "sum" column (like row 2 and 3).... It is not clear what you mean with "with same value".
– trincot
yesterday
What is "with same value"? Which value(s)? All rows have at least one cell different. For instance, the first cell (the "#" column) is always different in your example. Others have a different value in the "sum" column (like row 2 and 3).... It is not clear what you mean with "with same value".
– trincot
yesterday
|
show 2 more comments
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
John is a new contributor. Be nice, and check out our Code of Conduct.
John is a new contributor. Be nice, and check out our Code of Conduct.
John is a new contributor. Be nice, and check out our Code of Conduct.
John is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53234528%2fmerge-table-rows-with-jquery%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
But the snippet example seems to give the right output. Could you instead give a snippet example where it goes wrong? If the snippet output is wrong, please add the table that you expect as output.
– trincot
2 days ago
This snippet already has wrong result. look at "Mr John Doe" in html code. He has 2 different courses but in results its not shown.
– John
2 days ago
So you want only rows to be removed when they are completely the same? Or only when some columns are the same?
– trincot
2 days ago
I want all rows for one person with same value to be merged.
– John
yesterday
What is "with same value"? Which value(s)? All rows have at least one cell different. For instance, the first cell (the "#" column) is always different in your example. Others have a different value in the "sum" column (like row 2 and 3).... It is not clear what you mean with "with same value".
– trincot
yesterday