Javascript JQUERY表排序器未正确排序数字列

Javascript JQUERY表排序器未正确排序数字列,javascript,jquery,tablesorter,Javascript,Jquery,Tablesorter,对包含浮点数和整数的列进行排序时遇到问题: 示例 当前正在按如下方式排序的列: 4697.2 403.95 399.38 317.94 316.44 3138.7 308.28 262.75 1839.5 179.94 159.97 145.99 103.95 94.95 90.24 819.9 我想按值对列进行排序,因为目前它似乎是按字符长度对数字进行排序-可能吗 以下是我的javascript: <script> $(function(){ $('table').ta

对包含浮点数和整数的列进行排序时遇到问题:

示例

当前正在按如下方式排序的列:

4697.2
403.95
399.38
317.94
316.44
3138.7
308.28
262.75
1839.5
179.94
159.97
145.99
103.95
94.95
90.24
819.9
我想按值对列进行排序,因为目前它似乎是按字符长度对数字进行排序-可能吗

以下是我的javascript:

<script>

$(function(){
    $('table').tablesorter({
        widgets        : ['zebra', 'columns', 'stickyHeaders'],
        usNumberFormat : false,
        numberSorter: function (a, b, direction) {
    if (a >= 0 && b >= 0) { return direction ? a - b : b - a; }
    if (a >= 0) { return -1; }
    if (b >= 0) { return 1; }
    return direction ? b - a : a - b;
}
    });
});

</script>

$(函数(){
$('table').tablesorter({
小部件:['zebra','columns','stickyHeaders'],
usNumberFormat:false,
数字排序器:功能(a、b、方向){
如果(a>=0&&b>=0){返回方向?a-b:b-a;}
如果(a>=0){return-1;}
如果(b>=0){返回1;}
返回方向?b-a:a-b;
}
});
});

有人能告诉我需要做什么来纠正这个问题吗?
谢谢

在进行任何计算或比较之前,您不能使用parseFloat将值a和b转换为浮点吗

a = parseFloat(a);
b = parseFloat(b);

在进行任何计算或比较之前,不能使用parseFloat将值a和b转换为浮点吗

a = parseFloat(a);
b = parseFloat(b);

修复是由@fuchs777建议的。usNumberFormat设置被设置为false。这意味着tablesorter将这些值视为德语数字格式,例如
1.234.567,89
。在德国数字格式中,千用句点(句号)表示,而不是逗号

修复程序正在设置
usNumberFormat:true

例如:

$(function(){
    $('table').tablesorter({
        widgets        : ['zebra', 'columns', 'stickyHeaders'],
        usNumberFormat : true,
        numberSorter: function (a, b, direction) {
        if (a >= 0 && b >= 0) { return direction ? a - b : b - a; }
        if (a >= 0) { return -1; }
        if (b >= 0) { return 1; }
        return direction ? b - a : a - b;
    }
    });
});

修复是由@fuchs777建议的。usNumberFormat设置被设置为false。这意味着tablesorter将这些值视为德语数字格式,例如
1.234.567,89
。在德国数字格式中,千用句点(句号)表示,而不是逗号

修复程序正在设置
usNumberFormat:true

例如:

$(function(){
    $('table').tablesorter({
        widgets        : ['zebra', 'columns', 'stickyHeaders'],
        usNumberFormat : true,
        numberSorter: function (a, b, direction) {
        if (a >= 0 && b >= 0) { return direction ? a - b : b - a; }
        if (a >= 0) { return -1; }
        if (b >= 0) { return 1; }
        return direction ? b - a : a - b;
    }
    });
});

如果将usNumberFormat设置为false,则分拣机应期望值为430,95。。。将值更改为使用“,”作为十进制分隔符,或使用

usNumberFormat : true

如果将usNumberFormat设置为false,则分拣机应期望值为430,95。。。将值更改为使用“,”作为十进制分隔符,或使用

usNumberFormat : true

只是猜测一下,但是您将usNumberFormat设置为false,那么分类器应该期望值为430,95。。。要么更改值,要么使用true@fuchs777-好建议!现在可以了,谢谢你为什么需要
numberSorter
中的额外代码?如果没有它,它应该可以正常工作。只是一个猜测,但是您将usNumberFormat设置为false,那么分类器应该期望数值为430,95。。。要么更改值,要么使用true@fuchs777-好建议!现在可以了,谢谢你为什么需要
numberSorter
中的额外代码?没有它,它应该可以正常工作。没有任何变化。还有其他建议吗?谢谢你的帮助,多纳尔。@fuchs777建议回答:
usNumberFormat:true
@fuchs777是的。当usNumberFormat设置为false时,假定值为德语数字格式。在德国数字格式中,千用句号表示,而不是逗号。@Donal使用js多年后,我仍然不相信自动类型转换;)一切都没有改变。还有其他建议吗?谢谢你的帮助,多纳尔。@fuchs777建议回答:
usNumberFormat:true
@fuchs777是的。当usNumberFormat设置为false时,假定值为德语数字格式。在德国数字格式中,千用句号表示,而不是逗号。@Donal使用js多年后,我仍然不相信自动类型转换;)