编辑:Pete 提供了一个非常好的解决方案,当字段包含数字时有效,但是我也需要能够对字符串进行排序 - 有什么想法吗?
我正在尝试编写一个 javascript 排序算法,该算法将根据单击的列对表进行排序 - 我知道这是半重新发明轮子,但设计太复杂,我无法尝试插入其他插件等。
有些列是文本,有些列是数字。
单击列调用:sort(X,Y)。X 是列号,因此我们知道要比较哪些单元格进行排序。Y 是模式,即升序或降序。
排序函数的代码是:
function sort(field, mode) {
var tabrows = 0;
$(".data tr").each(function() { if($(this).hasClass("hdr")) { } else {tabrows++;} });
var swapped;
do {
swapped = false;
for (var i=0;i< tabrows; i++) {
var j = i + 3;
var k = i + 4;
var row1 = $(".data tr:nth-child("+j+")");
var row2 = $(".data tr:nth-child("+k+")");
var field1 = row1.find("td:eq("+field+")").text();
var field2 = row2.find("td:eq("+field+")").text();
if(shouldswap(field1, field2, mode)) {
swaprows(row1, row2);
swapped = true;
}
}
} while (swapped);
}
shouldswap 函数如下:
function shouldswap(field1, field2,mode) {
if(field1 > field2) {
if(mode==1) {
return true;
} else {
return false;
}
}
return false;
}
swaprows 函数的代码:
function swaprows(row1, row2) {
row2.insertBefore(row1);
}
谁能明白为什么这会导致浏览器冻结/锁定。我已经为此工作了很长一段时间,所以我认为一双新的眼睛可能会指出一些愚蠢的事情!任何帮助表示赞赏:)