編集: ピートは、フィールドに数字が含まれている場合に機能する非常に優れたソリューションを提供しましたが、文字列もソートできるようにする必要があります-何かアイデアはありますか?
クリックされた列に基づいてテーブルをソートするJavaScriptソートアルゴリズムを作成しようとしています.
一部の列はテキストで、一部の列は数値です。
列をクリックすると、sort(X,Y) が呼び出されます。X は列番号であるため、並べ替えのためにどのセルを比較するかがわかります。Y はモード、つまり昇順または降順です。
sort 関数のコードは次のとおりです。
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);
}
これによりブラウザがフリーズ/ロックアップする理由を誰でも理解できますか。私はかなり長い間これに取り組んできたので、新鮮な目でばかげたことを指摘できると思います! どんな助けでも大歓迎です:)