【发布时间】:2017-07-27 03:02:49
【问题描述】:
我正在尝试创建一个 HTML 表格,其中包含用于绘制绘图的信息。 我不想查询数据库两次,我想用信息创建图表和表格。 这是我从服务器得到的,它被绘制成图表:
var data = {
"selector":"#charttotalday",
"jsondata":[
{
"label":"Client1",
"data":[
[1382670000000,110157],
[1382756400000,199055],
[1382842800000,362996],
[1382929200000,302],
[1383015600000,169],
[1383102000000,88],
[1383188400000,49]
],
"points":{
"fillColor":"#88bbc8"
}
},
{
"label":"Client2",
"data":[
[1382670000000,58611],
[1382756400000,112268],
[1382842800000,193060],
[1382929200000,115],
[1383015600000,45],
[1383102000000,65],
[1383188400000,18]
],
"points":{
"fillColor":"#ed7a53"
}
},
{
"label":"Client3",
"data":[
[1382670000000,65534],
[1382756400000,118362],
[1382842800000,200058],
[1382929200000,123],
[1383015600000,65],
[1383102000000,53],
[1383188400000,26]
],
"points":{
"fillColor":"#9FC569"
}
}
]
};
由于信息的组织方式,我无法使用 $.each 对其进行循环并创建格式的表格:
Client1 Client2 Client3
1382670000000 | 10157 | 58611 | 65534 |
1382756400000 | 99055 | 12268 | 18362 |
1382842800000 | 62996 | 93060 | 10058 |
1382929200000 | 302 | 115 | 123 |
1383015600000 | 169 | 45 | 65 |
1383102000000 | 88 | 65 | 53 |
1383188400000 | 49 | 18 | 26 |
我认为最好的方法是读取对象并创建一个具有我需要的结构的新对象,可以与 $.each 一起使用。
我已经试过了:
$.each(data.jsondata, function(key, value) {
thead += '<th>' + value.label + '</th>';
tableData[value.label] = new Object();
$.each(value.data, function(key1, value1) {
$.each(value1, function(key2, value2) {
if(key2 == 0) {
//here I have the time line, axis Y
index = value2;
}
if(key2 == 1) {
//here I have the values for the table
tableData[value.label][index] = value2;
}
});
});
});
thead += '</tr>';
但这只会用我需要的信息创建一个更简单的元素,但仍然不能变成我需要的。
有人可以指点我正确的方向吗?
【问题讨论】:
-
真的不清楚你在问什么......请更具体。也建议你在 jsfiddle.net 中创建一个演示
-
在使用$.each之前为什么不想把data.jsondata转换成合适的结构数组
-
@charlietfl:我已经按照 flot 需要的方式格式化了数据,但没有正确组织,无法轻松用于创建表格。
-
@jonasnas:我该怎么做?我想做,不知道怎么做。谢谢。
标签: javascript json charts html-table each