Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript按行对HTML表数据排序_Javascript_Jquery_Html_Sorting - Fatal编程技术网

使用Javascript按行对HTML表数据排序

使用Javascript按行对HTML表数据排序,javascript,jquery,html,sorting,Javascript,Jquery,Html,Sorting,问题 给定以下HTML表格 <table id="sort-table"> <tbody> <tr> <td>text*1234</td> <td>data</td> </tr> <tr> <td>text*1224</td>

问题

给定以下
HTML
表格

<table id="sort-table">
    <tbody>
        <tr>
            <td>text*1234</td>
            <td>data</td>
        </tr>
        <tr>
            <td>text*1224</td>
            <td>data</td>
        </tr>
        <tr>
            <td>text*1254</td>
            <td>data</td>
        </tr>
        <tr>
            <td>texta*1234</td>
            <td>data</td>
        </tr>
        <tr>
            <td>textabc*1234</td>
            <td>data</td>
        </tr>
        <tr>
            <td>textab*1234</td>
            <td>data</td>
        </tr>
        <tr>
            <td>*2234</td>
            <td>data</td>
        </tr>
        <tr>
            <td>textabcd*1234</td>
            <td>data</td>
        </tr>
        <tr>
            <td>text*1234</td>
            <td>data</td>
        </tr>
        <tr>
            <td>textabc*1234*1234</td>
            <td>data</td>
        </tr>
    </tbody>
</table>
下面是一个显示当前工作方式的示例

您可以使用该方法按所需顺序组织行:

$('#sort-table tr').sort(function(a, b) {
    var aText = $(a).find('td:eq(0)').text();
    var bText = $(b).find('td:eq(0)').text();

    if (aText > bText)
        return 1;
    else if (aText < bText)
        return -1;
    return 0;
}).appendTo('#sort-table');
$('#sort table tr').sort(函数(a,b){
var-aText=$(a).find('td:eq(0)').text();
var bText=$(b).find('td:eq(0)').text();
如果(aText>bText)
返回1;
else if(aText

排序函数有点错误,请参见:@MinusFour,因此
.sort()
方法可能会在过时的浏览器中执行一些奇怪的操作,但现代浏览器可以,对吗?可以肯定的是,输入camparison函数的行为似乎没有任何错误。@languidQuid否,它是关于使用3个不同的值(1,0,-1)对数组进行排序。当您执行
时,返回a>b返回true或false,1或0。注意:它不是真正的1和-1。肯定和否定更准确。我相信我明白你现在所说的。传入的比较函数返回与(
1
0
-1
)值相对应的(
true
false
)值。这可能会导致一些不可靠的行为?虽然它适用于我提供的测试数据,但可能需要进行一些修改,然后才能在荒野中释放。@four您是对的,
sort()
的这种实现并不是严格意义上的最佳实践-尽管由于Javascript松散的数据类型,它可以很好地工作。我会修改的。
$('#sort-table tr').sort(function(a, b) {
    var aText = $(a).find('td:eq(0)').text();
    var bText = $(b).find('td:eq(0)').text();

    if (aText > bText)
        return 1;
    else if (aText < bText)
        return -1;
    return 0;
}).appendTo('#sort-table');