0
我想表与这两个词和数字列进行排序的表格。这些词是按照预期工作的。但数字 - 部分是有点关闭。试图梳理与数字
其中一列是价格列从500-1500金额。但现在,500下降到1500以下,我不知道如何解决这个问题。
function sortTable(n) {
var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
table = document.getElementById("allCars");
switching = true;
dir = "asc";
while (switching) {
switching = false;
rows = table.getElementsByTagName("TR");
for (i = 1; i < (rows.length - 1); i++) {
shouldSwitch = false;
x = rows[i].getElementsByTagName("TD")[n];
y = rows[i + 1].getElementsByTagName("TD")[n];
if (dir == "asc") {
if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
shouldSwitch= true;
break;
}
} else if (dir == "desc") {
if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
shouldSwitch= true;
break;
}
}
}
if (shouldSwitch) {
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
switchcount ++;
} else {
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}
你的排序是打破了整数,但正在为字符串的原因是因为它的排序整数作为一个字符串,因此,比较1500〜500的问题是,1小于5。这个答案解释比较详细(更好)https://softwareengineering.stackexchange.com/a/127644 也许考虑它定义它的类型表的顶级行(TH)的属性,那么你可以使用parseInt函数解析,你知道的值将是一个int – Robbie
而不是手动执行此操作,dataTables(datatables.net)会更好。但如果你是反对的是,检查它是否是一个数字,然后用数(VAL)的值转换为数字 – Simon