所以这个让我难过。我需要使用HTML
表并生成一个代表每月条目数的折线图。我目前有DataTables
为我创建表,并且无法修改源数据。我将使用Flot为我生成折线图。 Flot函数需要一个数据集,如下所示。
预期数据集:
[ [1, 3], [2, 14], [3, 3] ]
在DataTables
函数fnInitComplete期间,我需要从表数据生成上述数据集并将其传递给Flot
函数。这确保了图表与表格一样动态,这是一项要求。
以下是我到目前为止:(不完整的DataTables函数,但此问题不需要其余部分)
$(document).ready(function() {
// The unimportant DT part
var sTable = $('#sTable').dataTable({ ... });
// What I currently have
var items=[]; // The wrapper for my dataset (array)
//Iterate all td's in eighth column
$('#sTable tbody tr td:nth-child(8)').each( function(){
//convert to jsDate from MySQL timestamp
var dateParts = $(this).text().split("-");
var jsDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2].substr(0,2));
var n = jsDate.getMonth();
//In my table I have March (represented as 2) five times so
//console.log(n); will print 2 five times.
});
});
据我所知,这是不幸的。我认为最好的方法是取n
值并使其成为变量的名称,这样我就可以将变量定义为2,然后我就可以执行2++
之类的操作。这种方式对于每个月返回的数字,我将有一个以该数字命名的变量,它将包含它在.each函数中出现的次数。这也会将变量限制在仅存在的几个月,并允许我简单地创建我需要传递的数据集。
我没有太多使用JavaScript的经验,因此非常感谢任何帮助。
答案 0 :(得分:0)
创建一个包含每个月的数组,以及从零开始的月份计数,如下所示:
[ [1, 0], [2, 0], ..., [12, 0] ]
使用此代码:
var items = [];
for (var i = 1; i <= 12; i++)
items.push([i, 0]);
然后在each
函数中使用
items[n][1]++;
增加表格中每个月n
出现的次数。
之后,您可以使用items
数组创建一个邮票图表。