Jquery 获取表格单元格值并按字母顺序排序

Jquery 获取表格单元格值并按字母顺序排序,jquery,Jquery,我创建了一个表。首先,我用一个按钮得到第二列的td值。我将值发送到数组。稍后我调用排序函数,我想将排序后的值写入第二列的td值。我的错在哪里?还有什么不同的方法吗 <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> </head> <bo

我创建了一个表。首先,我用一个按钮得到第二列的td值。我将值发送到数组。稍后我调用排序函数,我想将排序后的值写入第二列的td值。我的错在哪里?还有什么不同的方法吗

    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
    </head>
    <body>
        <input type="button" value="Sort" id="sort"></input>
                <table cellpadding="1" cellspacing="1" id="mytable" border="1">
                <tr>
                    <td>Coby</td>
                    <td>Vanna</td>
                    <td>Balurghat</td>
                </tr>
                <tr>
                    <td>Arsenio</td>
                    <td>Ignacia</td>
                    <td>Tramutola</td>
                </tr>
                <tr>
                    <td>Kenneth</td>
                    <td>Gretchen</td>
                    <td>Penhold</td>
                </tr>
                <tr>
                    <td>Aquila</td>
                    <td>Breanna</td>
                    <td>Liverpool</td>
                </tr>
                <tr>
                    <td>Dane</td>
                    <td>Isadora</td>
                    <td>Silverton</td>
                </tr>
                <tr>
                    <td>Jerry</td>
                    <td>Mari</td>
                    <td>Thon</td>
                </tr>
                <tr>
                    <td>Kareem</td>
                    <td>Courtney</td>
                    <td>Senneville</td>
                </tr>
                <tr>
                    <td>Fulton</td>
                    <td>Karen</td>
                    <td>Berloz</td>
                </tr>
                <tr>
                    <td>Quamar</td>
                    <td>Quon</td>
                    <td>Zamora</td>
                </tr>
                </table>
        <script type="text/javascript" language="javascript">
        $("#sort").click(function(){
            $('#mytable tr').each(function() {
                var arr=[];
                var x = $(this).find("td").eq(1).text();        
                arr.push(x);
                SortElements();
            });         
        })


        function SortElements() {
        arr.sort(alphabetical);
            alert(arr);
        }   
        function alphabetical(a, b)
        {
             var A = a.toLowerCase();
             var B = b.toLowerCase();
             if (A < B){
                return -1;
             }else if (A > B){
               return  1;
             }else{
               return 0;
             }
        }
    </script>   
    </body>
    </html>

科比
瓦纳
巴卢尔加特
阿塞尼奥
伊格纳西亚
特拉穆托拉
肯尼斯
格雷琴
笔筒
阿奎拉
布瑞纳
利物浦
丹麦人
伊莎多拉
西尔弗顿
杰瑞
玛丽
马拉松
卡里姆
考特尼
塞内维尔
富尔顿
凯伦
贝尔洛
夸马尔
管姓
萨莫拉
$(“#排序”)。单击(函数(){
$('#mytable tr')。每个(函数(){
var-arr=[];
var x=$(this.find(“td”).eq(1.text();
arr.push(x);
分类元素();
});         
})
功能分类元素(){
arr.sort(按字母顺序排列);
警报(arr);
}   
按字母顺序排列的函数(a,b)
{
var A=A.toLowerCase();
var B=B.toLowerCase();
if(AB){
返回1;
}否则{
返回0;
}
}

有几件事:您实际上并没有在发布的代码中向表中回写任何内容

每次从另一个
读取值时,都会调用
SortElements()
。只需首先收集所有值,然后在完成
$('#mytable tr')。每个()循环,调用一次

$('#mytable tr')内的每次迭代中,您都在删除您的
arr
。each()
通过执行
var arr=[]。在循环之前做一次

$("#sort").click(function(){
    var arr = [];

    $('#mytable tr').each(function() {
        var x = $(this).find("td").eq(1).text();        
        arr.push(x);
    }).promise().done(function(){
        arr = sort_elements(arr);
        var i = 0;

        // Simply loop again and insert the object with
        // that index.
        $('#mytable tr').each(function() {
            $(this).find("td").eq(1).text(arr[i++]);
        });
    });
});
使用
$(elem).each().promise().done()
构造使
each()
方法成为可启用的(请参阅)

您的
sort\u元素
arr
作为参数接收

function sort_elements(arr) {
    arr.sort(alphabetical);
    return arr
}

嗯,它在起作用。稍后如何将排序后的值写入第一列?这部分你能帮我吗?更新了我的答案。