Мне было интересно, можно ли сделать сценарий, который on column click
, выделил бы столбец, а не просто выделил его на hover
.
Сейчас я сделал это CSS
* {
box-sizing:border-box;
}
table {
overflow: hidden;
}
td, th {
position: relative;
}
td:hover::before {
background-color: #eee;
content: '';
height: 100%;
left: -5000px;
position: absolute;
top: 0;
width: 10000px;
z-index: -2;
}
td:hover::after {
background-color: rgb(255, 218, 170);
content: '';
height: 10000px;
left: 0;
position: absolute;
top: -5000px;
width: 100%;
z-index: -1;
}
<table style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
Можно ли сделать script
, который сделал это, только для столбцов:
function highlight_row() {
var table = document.getElementById("testresultsTable");
var cells = table.getElementsByTagName("td");
for (var i = 0; i < cells.length; i++) {
// Take each cell
var cell = cells[i];
// do something on onclick event for cell
cell.onclick = function() {
// Get the row id where the cell exists
var rowId = this.parentNode.rowIndex;
var rowsNotSelected = table.getElementsByTagName("tr");
for (var row = 0; row < rowsNotSelected.length; row++) {
if(row !== rowId) {
}
}
var rowSelected = table.getElementsByTagName("tr")[rowId];
if (rowSelected.classList.contains("selected")) {
rowSelected.style.backgroundColor = "";
rowSelected.classList.remove("selected");
} else {
rowSelected.style.backgroundColor = "yellow";
rowSelected.classList.add("selected");
}
}
}
} //end of function
window.onload = highlight_row;
<table id = 'testresultsTable' style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
Итак, вопрос: Как сделать что-то похожее на скрипт выбора строки, только для столбцов. Поэтому, когда я нажимаю Firstname, Lastname or Age
, столбец выбирается, и его можно также отменить, если я нажму еще раз.