У меня была ситуация, когда было бы очень сложно изменить каждое значение TD и добавить соответствующее имя класса, чтобы я мог его переключать.В результате я написал немного JavaScript, чтобы сделать это автоматически.Пожалуйста, смотрите следующий код.
tbl = document.getElementById("Mytable")
classes = getClasses(tbl.rows[0]);
setClasses(tbl, classes);
toggleCol("col0");
toggleCol("col1");
function getClasses(row){
var cn = 0;
var classes = new Array();
for(x=0; x < row.cells.length; x++){
var cell = row.cells[x];
var c = new Column(cell.textContent.trim(), cell.offsetLeft, cell.offsetLeft + cell.offsetWidth, x);
classes[x]= c;
}
return classes;
}
function Column(name, left, right, cols) {
this.name = name;
this.left = left;
this.right = right;
this.cols = cols;
}
function setClasses(table, classes){
var rowSpans = new Array();
for(x=0; x < table.rows.length; x++){
var row = table.rows[x];
for(y=0; y < row.cells.length; y++){
var cell = row.cells[y];
for(z=0; z < classes.length; z++){
if(cell.offsetLeft >= classes[z].left && cell.offsetLeft <= classes[z].right){
cell.className = "col" + classes[z].cols;
}
}
}
}
}
function toggleCol(name){
var cols = document.getElementsByClassName(name);
for(x=0; x < cols.length; x++){
cols[x].style.display= (cols[x].style.display == 'none') ? '' : 'none';
}
}
В моем примере я смотрю на первый ряд, чтобы установить заголовок верхнего уровня (в моем примере у меня было несколько человек, у которых был colspans).Он использует offsetLeft и offsetWidth, чтобы определить диапазон верхнего заголовка (который в моих случаях имеет подзаголовки), так что все вложенные столбцы будут переключаться с его родителем.
На основе этих значений setClasses устанавливает соответствующие классы для всех элементов.
В моем примере я затем переключаю "col0" и "col1", чтобы они были невидимы (снова запустив функциюсделает их снова видимыми).