Javascript表排序器将数字排序为字符串
我使用javascript从JSON生成一个表,并使用函数sorttable()对表进行排序 文本排序可以工作,但numbersort存在一个问题,即排序者认为数字是字符串 如何解决分拣机处理数字的问题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
$(文档).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