【发布时间】:2018-10-03 13:40:36
【问题描述】:
我有一个包含员工列表的 JSON 文件。我将此数据导入表。下一步是按<th> 添加排序。我的脚本不起作用,没有任何反应。我不知道原因。我只是一个JS初学者。你能帮我解释一下为什么排序不起作用吗?
这是我的存储库: https://github.com/rrajca/Employee-table
我的js是:
$(document).ready(function() {
$.getJSON("dane.json", function(data) {
/* var sortedList = data.sort(function(a, b) {
return a.id - b.id;
}) */
var employeeList = "";
$.each(data, function(key, value) {
employeeList += "<tr>";
employeeList += "<td>"+value.id+"</td>";
employeeList += "<td>"+value.firstName+"</td>";
employeeList += "<td>"+value.lastName+"</td>";
employeeList += "<td>"+value.dateOfBirth+"</td>";
employeeList += "<td>"+value.company+"</td>";
employeeList += "<td>"+value.note+"</td>";
employeeList += "</tr>";
})
$("tbody").append(employeeList);
})
var compare = {
name: function(a, b) {
a = a.replace(/^the /i, '');
b = b.replace(/^the /i, '');
if (a < b) {
return -1;
} else {
return a > b ? 1 : 0;
}
},
duration: function(a, b) {
a = a.split(':');
b = b.split(':');
a = Number(a[0]) * 60 + Number(a[1]);
b = Number(b[0]) * 60 + Number(b[1]);
return a - b;
},
date: function(a, b) {
a = new Date(a);
b = new Date(b);
return a - b;
}
};
$('.sortable').each(function() {
var $table = $(this);
var $tbody = $table.find('tbody');
var $controls = $table.find('th');
var rows = $tbody.find('tr').toArray();
$controls.on('click', function() {
var $header = $(this);
var order = $header.data('sort');
var column;
if ($header.is('.ascending') || $header.is('.descending')) {
$header.toggleClass('ascending descending');
$tbody.append(rows.reverse());
} else {
$header.addClass('ascending');
$header.siblings().removeClass('ascending descending');
if (compare.hasOwnProperty(order)) {
column = $controls.index(this);
rows.sort(function(a, b) {
a = $(a).find('td').eq(column).text();
b = $(b).find('td').eq(column).text();
return compare[order](a, b);
});
$tbody.append(rows);
}
}
});
});
});
【问题讨论】:
标签: arrays json sorting html-table getjson