показать / скрыть столбцы HTML-таблицы с помощью CSS

Я хочу отобразить базовую HTML-таблицу с элементами управления, чтобы переключать показ / скрытие дополнительных столбцов:

<table id="mytable">
    <tr>
        <th>Column 1</th>
        <th class="col1">1a</th>
        <th class="col1">1b</th>
        <th>Column 2</th>
        <th class="col2">2a</th>
        <th class="col2">2b</th>
    </tr>
    <tr>
        <td>100</td>
        <td class="col1">40</td>
        <td class="col1">60</td>
        <td>200</td>
        <td class="col2">110</td>
        <td class="col2">90</td>
    </tr>
</table>

Таким образом, столбец 1 и столбец 2 будут единственными столбцами, отображаемыми по умолчанию, но когда вы щелкаете столбец 1, я хочу, чтобы переключались кнопки 1a и 1b, и то же самое для столбца 2 с 2a и 2b. В итоге у меня может появиться больше столбцов и много строк, поэтому при тестировании любые подходы к зацикливанию JavaScript были слишком медленными для работы.

Единственный подход, который кажется достаточно быстрым, заключается в том, чтобы настроить некоторые CSS, как это:

table.hide1 .col1 { display: none; }
table.hide2 .col2 { display: none; }
table.hide3 .col3 { display: none; }

table.show1 .col1 { display: table-cell; }
table.show2 .col2 { display: table-cell; }
table.show3 .col3 { display: table-cell; }

А затем установите вызовы функций onClick для ячеек заголовка таблицы, которые будут вызывать переключение, и определите, какой класс css установить для «mytable», создаст эффект переключения, который я ищу. Есть ли простой способ настроить это так, чтобы код мог работать для n # столбцов?

Обновить

Вот то, что я придумал, прекрасно работает - и очень быстро. Дайте мне знать, если вы можете подумать о способах улучшения.

CSS

.col1 {display: none; }
.col2 {display: none; }
.col3 {display: none; }

table.show1 .col1 { display: table-cell; }
table.show2 .col2 { display: table-cell; }
table.show3 .col3 { display: table-cell; }

Javascript

function toggleColumn(n) {
    var currentClass = document.getElementById("mytable").className;
    if (currentClass.indexOf("show"+n) != -1) {
        document.getElementById("mytable").className = currentClass.replace("show"+n, "");
    }
    else {
        document.getElementById("mytable").className += " " + "show"+n;
    }
}

И фрагмент HTML:

<table id="mytable">
<tr>
    <th onclick="toggleColumn(1)">Col 1 = A + B + C</th>
    <th class="col1">A</th>
    <th class="col1">B</th>
    <th class="col1">C</th>
    <th onclick="toggleColumn(2)">Col 2 = D + E + F</th>
    <th class="col2">D</th>
    <th class="col2">E</th>
    <th class="col2">F</th>
    <th onclick="toggleColumn(3)">Col 3 = G + H + I</th>
    <th class="col3">G</th>
    <th class="col3">H</th>
    <th class="col3">I</th>
</tr>
<tr>
    <td>20</td>
    <td class="col1">10</td>
    <td class="col1">10</td>
    <td class="col1">0</td>
    <td>20</td>
    <td class="col2">10</td>
    <td class="col2">8</td>
    <td class="col2">2</td>
    <td>20</td>
    <td class="col3">10</td>
    <td class="col3">8</td>
    <td class="col3">2</td>
</tr>
</table>

Ответы на вопрос(4)

Ваш ответ на вопрос