@kpot1979

Как объединить ячейки с одинаковыми значениями в html таблице с помощью js?

Здравствуйте!
Есть таблица, вида
<table border="1" >
  <tr>
    <td>a</td>
    <td>aa</td>
    <td>text 1</td>
  </tr>
  <tr>
    <td>a</td>
    <td>aa</td>
    <td>text 2</td>
  </tr>
  <tr>
    <td>b</td>
    <td>aa</td>
    <td>text 3</td>
  </tr>
  <tr>
    <td>b</td>
    <td>bb</td>
    <td>text 4</td>
  </tr>
  <tr>
    <td>b</td>
    <td>bb</td>
    <td>text 5</td>
  </tr>
  <tr>
    <td>c</td>
    <td>bb</td>
    <td>text 6</td>
  </tr>
  <tr>
    <td>c</td>
    <td>cc</td>
    <td>text 7</td>
  </tr>
</table>

Как с помощью JS (JQUERY) сделать так, чтобы ячейки с одинаковыми значениями в соседних рядах автоматически объединялись, т.е. таблица имела вид:
<table border="1" >
  <tr>
    <td rowspan="2">a</td>
    <td rowspan="3">aa</td>
    <td>text 1</td>
  </tr>
  <tr>
    <td>text 2</td>
  </tr>
  <tr>
    <td rowspan="3">b</td>
    <td>text 3</td>
  </tr>
  <tr>
    <td rowspan="3">bb</td>
    <td>text 4</td>
  </tr>
  <tr>
    <td>text 5</td>
  </tr>
  <tr>
    <td rowspan="2">c</td>
    <td>text 6</td>
  </tr>
  <tr>
    <td>cc</td>
    <td>text 7</td>
  </tr>
</table>
  • Вопрос задан
  • 2283 просмотра
Решения вопроса 1
@Ridz
$(function() {
    $.map($("tr:first td"), function(b, a) {
        return $("tr td:nth-child(" + ++a + ")")
    }).forEach(function(b) {
        var a;
        b.each(function(b, c) {
            a && a.textContent == c.textContent ? ($(c).remove(), a.rowSpan++) : a = c
        })
    })
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AlexanderY
Какая конкретно часть вызывает затруднения? Похоже, придётся пройтись по всем ячейкам с помощью each и составить массив с уникальными значениями. А потом на базе этого массива построить новую таблицу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы