Javascript表排序器将数字排序为字符串

Javascript表排序器将数字排序为字符串,javascript,jquery,tablesorter,Javascript,Jquery,Tablesorter,我使用javascript从JSON生成一个表,并使用函数sorttable()对表进行排序 文本排序可以工作,但numbersort存在一个问题,即排序者认为数字是字符串 如何解决分拣机处理数字的问题 $(文档).ready(函数(){ var hotspots=“[{\'path\”:\'src/main/java/tools/generator/data/RecordPart.java\”,“'revisions\”:25,“'codeLines\”:18},{\'path\”:\'sr

我使用javascript从JSON生成一个表,并使用函数sorttable()对表进行排序

文本排序可以工作,但numbersort存在一个问题,即排序者认为数字是字符串

如何解决分拣机处理数字的问题

$(文档).ready(函数(){
var hotspots=“[{\'path\”:\'src/main/java/tools/generator/data/RecordPart.java\”,“'revisions\”:25,“'codeLines\”:18},{\'path\”:\'src/main/java/tools/generator/data/RecordTotal.java\”,“revisions\”:55,“'codeLines\”:23},{'path\“:'src/main/resources/test.xml\”,“revisions\:102,\'codeLines\”:44},{'path\:”src/main/java/tools/generator/helper/MenuHelper.java\“,”修订版\“:4,\”代码行\“:115}]”;
var jsonhostspots=JSON.parse(热点);
可施工(jsonHotspots);
});
//构造表
函数constructTable(json){
debug(“Table:+json);//这将在firebug控制台中显示它的信息
var tbl=$(“”).attr(“id”,“mytable”);
$(“#div1”)。追加(待定);
var tr=“”;
var td1='Path';
var td2='Revision';
var-td3='CodeLines';
$(“#我的表格”)。追加(tr+td1+td2+td3);
for(var i=0;iy.innerHTML.toLowerCase()){
shouldSwitch=true;
打破
}
}否则,如果(dir==“desc”){
if(x.innerHTML.toLowerCase()

解决方案

确定一个简单的
if
来查看是第0行还是第1&2行,如果是
1
还是
2
,我将字符串转换为int,这样就行了

function sortTable(n) {
          var table, rows, switching, i, x, y,x1,y1, shouldSwitch, dir, switchcount = 0;
          table = document.getElementById("mytable");
          switching = true;
          dir = "asc";
          while (switching) {
            switching = false;
            rows = table.getElementsByTagName("TR");
            for (i = 1; i < (rows.length - 1); i++) {
              shouldSwitch = false;
                    if(n == 0) {
                        x = rows[i].getElementsByTagName("TD")[n];
                        y = rows[i + 1].getElementsByTagName("TD")[n];
                        if (dir == "asc") {
                            if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
                              shouldSwitch= true;
                              break;
                            }
                        } else if (dir == "desc") {
                            if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
                              shouldSwitch= true;
                              break;
                            }
                        }
                   }else{
                        x = rows[i].getElementsByTagName("TD")[n].innerHTML;
                        y = rows[i + 1].getElementsByTagName("TD")[n].innerHTML;
                        x1 = Number(x)
                        y1 = Number(y)
                        if (dir == "asc") {
                            if (x1 > y1) {
                              shouldSwitch= true;
                              break;
                            }
                        } else if (dir == "desc") {
                            if (x1 < y1) {
                              shouldSwitch= true;
                              break;
                            }
                        }
                   }
           }
            if (shouldSwitch) {
              rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
              switching = true;
              switchcount ++;
            } else {
              if (switchcount == 0 && dir == "asc") {
                dir = "desc";
                switching = true;
              }
            }
          }
        }
函数排序表(n){
var表,行,切换,i,x,y,x1,y1,shouldSwitch,dir,switchcount=0;
table=document.getElementById(“mytable”);
切换=真;
dir=“asc”;
while(切换){
切换=错误;
行=table.getElementsByTagName(“TR”);
对于(i=1;i<(rows.length-1);i++){
shouldSwitch=false;
如果(n==0){
x=行[i].getElementsByTagName(“TD”)[n];
y=行[i+1].getElementsByTagName(“TD”)[n];
如果(目录==“asc”){
if(x.innerHTML.toLowerCase()>y.innerHTML.toLowerCase()){
shouldSwitch=true;
打破
}
}否则,如果(dir==“desc”){
if(x.innerHTML.toLowerCase()y1){
shouldSwitch=true;
打破
}
}否则,如果(dir==“desc”){
if(x1