如何在JavaScript中删除和重新排序表格中的单元格
how to remove and re-order cells in a table in JavaScript
根据问题,我如何在JavaScript/Prototype中删除空单元格并将具有数据的单元格放在表的顶部,基本上所有具有数据的单元格都将位于顶部,然后应该删除空单元格。
<table>
<tr class="row">
<td class="c1">Cell1</td>
<td class="c2">Cell2</td>
</tr>
<tr class="row">
<td class="c1">Cell1</td>
<td class="c2"></td>
<td class="c3">Cell3</td>
</tr>
<tr class="row">
<td class="c1">Cell1</td>
<td class="c2">Cell2</td>
<td class="c3"></td>
</tr>
</table>
Cell1 Cell2 Cell1 Cell2 Cell3
Cell1 Cell3 ---> Cell1 Cell2
Cell1 Cell2 Cell1
谢谢
最后这是一个需要编码的算法。
我只是使用dom功能,因为我不熟悉jQuery或其他框架,但我认为你可以弄清楚算法的想法。转换它应该不会太难。
<html>
<head>
<script type="text/javascript">
function init() {
var table = document.getElementsByTagName("table")[0];
var trs = table.getElementsByTagName("tr");
var data = [];
var rows, columns;
// run through all TRs and TDs and collect the data into an array without
// empty slots
for (var r = 0; r < trs.length; r++) {
var tds = trs[r].getElementsByTagName("td");
for (var d = 0; d < tds.length; d++) {
if (tds[d].innerHTML) {
data[d] = (data[d] || []).concat(tds[d].innerHTML);
}
}
}
// the tricky thing now is to convert the X/Y alignment of the
// elements in data into a Y/X one for the table
columns = data.length; // target table will have this many columns
rows = data[0].length; // target table will have this many rows
table = document.createElement("table");
for (var r = 0; r < rows; r++) {
var tr = document.createElement("tr");
for (var c = 0; c < columns; c++) {
var td = document.createElement("td");
td.innerHTML = data[c][r] || "";
tr.appendChild(td);
}
table.appendChild(tr);
}
document.body.appendChild(table);
}
</script>
</head>
<body onload="init()">
<table>
<tr class="row">
<td class="c1">Cell1</td>
<td class="c2">Cell2</td>
</tr>
<tr class="row">
<td class="c1">Cell1</td>
<td class="c2"></td>
<td class="c3">Cell3</td>
</tr>
<tr class="row">
<td class="c1">Cell1</td>
<td class="c2">Cell2</td>
<td class="c3"></td>
</tr>
</table>
</body>
</html>
window.onload = function() {
var tds = document.getElementsByTagName("td");
for(var i=0; i<tds.length; i++) {
if(tds[i].innerHTML == "") {
tds[i].parentNode.removeChild(tds[i]);
}
}
};
相关文章:
- 表格排序器:对捷克字母进行排序
- 如何在具有分页功能的表格排序器中取消选中所有复选框
- 使用Mootools对表格行进行排序
- 如何对excel电子表格进行排序(KENDO UI)
- 表格拖放重新排序和列排序
- 如何在多个 Google 表格中对特定列进行排序
- 使用表格排序器和
- 带有表格排序器的多选复选框
- 表格排序器可单击,但不能排序
- 用angularjs对表格的行进行排序或重新排列(拖放)
- jQuery UI可排序-排序时表格单元格丢失边框
- 寻求关于如何将可排序网格纳入谷歌电子表格的全局指导
- 如何使用Javascript按字母顺序区分大小写对表格进行排序
- 单击表格标题进行排序
- 大卫·特恩布尔(David Turnbull)在未正确排序的附加球员表格中添加得分字段
- html表格的排序和分页
- 如何在JavaScript中删除和重新排序表格中的单元格
- 根据评分对表格进行排序
- 对表格排序后,表格行中的备用行颜色不起作用
- 在对表格进行分页和排序时,如何获得替代行颜色