我有这个Javascript来生成表,我添加了一个单击事件的标题标签,所以用户可以单击列名进行排序,但我现在需要现在排序dataset
这样的列我需要知道列的名称和数据类型以传递给函数sort_col()
,无论它是字符串还是数字或日期,以便能够基于此数据类型进行排序,所以我该怎么做?如何返回表列数据类型进行排序
var dataset = [
{ "field1":"dfg34r", "field2":"32.24" },
{ "field1":"d3f32dg", "field2":"32.52", "fdate":"3/2/2015" },
{ "field1":"fdbhjjts", "fdate":"7/4/2015" } ] ;
var cols = [];
function addHeaders(table, keys) {
var row = table.insertRow();
for(var i = 0; i < keys.length; i++) {
var cell = row.insertCell();
cols.push(keys[i]);
cell.outerHTML = "<th><a href='#'>"+keys[i]+"</a></th>";
}
}
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();
var col_idx = 0;
Object.keys(child).forEach(function(k) {
if (k != cols[col_idx]){
var cell = row.insertCell();
cell.appendChild(document.createTextNode(""));
}
col_idx++;
var cell = row.insertCell();
cell.appendChild(document.createTextNode(child[k]));
})
}
document.getElementById('container').appendChild(table);
var th = document.getElementsByTagName("th");
for (i = 0; i < th.length; i++) {
th[i].addEventListener("click", sort_col);
}
function sort_col(){
alert(this.innerHTML);
}
<div id="container" style="text-align: left;"></div>