0
JavaScriptを使用してJSONからテーブルを生成し、sorttable()関数を使用してテーブルをソートします。Javascriptテーブルソートの文字列をソートする
テキストソートは機能しますが、ソートでは数字が文字列であると思うという問題があります。
ソーターが数字のために働くのはどうすれば解決できますか?
$(document).ready(function() {
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\",\"revisions\": 4,\"codeLines\": 115}]";
var jsonHotspots = JSON.parse(hotspots);
constructTable(jsonHotspots);
});
//Construct Table
function constructTable(json) {
console.debug("Table : " + json); // this will show the info it in firebug console
var tbl=$("<table/>").attr("id","mytable");
$("#div1").append(tbl);
var tr="<tr>";
var td1='<td onclick="sortTable(0)" >Path</td>';
var td2='<td onclick="sortTable(1)" >Revision</td>';
var td3='<td onclick="sortTable(2)" >CodeLines</td></tr>';
$("#mytable").append(tr+td1+td2+td3);
for(var i=0;i < json.length ; i++)
{
var tr="<tr>";
var td1="<td>"+json[i]["path"]+"</td>";
var td2="<td>"+json[i]["revisions"]+"</td>";
var td3="<td>"+json[i]["codeLines"]+"</td></tr>";
$("#mytable").append(tr+td1+td2+td3);
}
}
//TableSorter
function sortTable(n) {
var table, rows, switching, i, x, y, 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;
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;
}
}
}
if (shouldSwitch) {
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
switchcount ++;
} else {
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<pre id=mytable></pre>
</div>