写一份JavaScript代码来实现对前端每个表格单独排序,表格class="tableSort"
时间: 2024-05-05 08:22:50 浏览: 61
非常感谢您的提问。以下是一份 JavaScript 代码,可以实现对前端每个表格单独排序,表格 class 为 "tableSort"。
```javascript
// 获取所有表格
var tables = document.getElementsByClassName("tableSort");
// 循环处理每一个表格
Array.prototype.forEach.call(tables, function(table) {
// 获取表格中的所有行
var rows = table.getElementsByTagName("tr");
// 获取表头中的所有单元格
var headers = rows[0].getElementsByTagName("th");
// 循环处理每个表头单元格
Array.prototype.forEach.call(headers, function(header, index) {
// 添加点击事件处理程序
header.addEventListener("click", function() {
// 获取所需的排序顺序(升序或降序)
var sortOrder = this.getAttribute("data-sort-order") || "asc";
// 切换排序顺序
sortOrder = sortOrder === "asc" ? "desc" : "asc";
// 设置所有表头单元格的默认排序顺序为升序
Array.prototype.forEach.call(headers, function(header) {
header.removeAttribute("data-sort-order");
header.classList.remove("asc", "desc");
header.classList.add("asc");
});
// 设置当前表头单元格的排序顺序
this.setAttribute("data-sort-order", sortOrder);
this.classList.remove("asc", "desc");
this.classList.add(sortOrder);
// 获取表格数据行的数组
var dataRows = Array.prototype.slice.call(rows, 1);
// 对数据行进行排序
dataRows.sort(function(a, b) {
// 获取指定单元格的文本内容
var aText = a.getElementsByTagName("td")[index].textContent.trim();
var bText = b.getElementsByTagName("td")[index].textContent.trim();
if (sortOrder === "asc") {
return aText.localeCompare(bText, undefined, {numeric: true});
} else {
return bText.localeCompare(aText, undefined, {numeric: true});
}
});
// 将排序后的数据行重新插入表格中
dataRows.forEach(function(dataRow) {
table.appendChild(dataRow);
});
});
});
});
```
请注意,该代码将每个表格视为具有相同的 HTML 结构,并将每个表格的表头单元格视为相同的 HTML 结构。如果您的表格结构与此不同,则需要相应地调整代码。
谢谢!
阅读全文