我有我使用Javascript只喜歡這款內置HTML表格從中通用數據:如何排序我的HTML表格
HTML:
<div id="container"></div>
的Javascript:
var dataset = [ { "field1":"val1", "field2":"val2", "field3":"val3" }, { "field1":"val4", "field2":"val5", "field3":"val6", "field4":"val7" } ] ;
function addHeaders(table, keys) {
var row = table.insertRow();
for(var i = 0; i < keys.length; i++) {
var cell = row.insertCell();
cell.appendChild(document.createTextNode(keys[i]));
}
}
var max_keys = 0;
var max_idx = 0;
for(var i = 0; i < dataset.length; i++) {
var child = dataset[i];
cur_keys = Object.keys(child).length;
if (cur_keys > max_keys) {
max_keys = cur_keys;
max_idx = i;
}
}
var table = document.createElement('table');
addHeaders(table, Object.keys(dataset[max_idx]));
for(var i = 0; i < dataset.length; i++) {
var child = dataset[i];
var row = table.insertRow();
Object.keys(child).forEach(function(k) {
var cell = row.insertCell();
cell.appendChild(document.createTextNode(child[k]));
})
}
document.getElementById('container').appendChild(table);
如何我可以允許用戶對列進行升序和降序排序?
更新: 排序代碼工作,爲字符串而不是數字!
dataset.sort(function (a, b) {
var nameA = Number(a.field2);
var nameB = Number(b.field2);
return (nameA - nameB);
});
添加的jsfiddle環節,也要考慮 「排序」 按鈕 – RomanPerekhrest
通過排序 「行」在'dataset'中的一個「fields」中重新創建表格,但這可能會花費相當多的時間和資源,這取決於您的數據...您可以預先設置數據並將其保存在不同的「數據集」中,以便它可以執行此操作每次從服務器或數據庫讀取數據時,只有一次...這是一個想法。 –
我添加了jsfiddle – Wel