我目前正在开发一个项目,允许用户输入数据并根据该数据创建图表。对于此项目,数据必须是累积的。我想知道如何在jQuery中为我的数据表获取列总计每行。
在此表中,我希望有一种方法可以将每列中的数据添加到最新日期,以便每个日期的数据点可以是当前日期的所有值的总和以及当前输入日期之前的日期。例如,2016年6月16日的数据点对于第一列为4000,对于第二列为4000,对于2016年7月16日,第一列和第二列的数据点分别为5882和8000,以及2016年8月16日第一列和第二列的数据点为7691和12000,依此类推。
以下是我从表中收集数据的函数代码:
function generateChartData() {
var chartData = [];
$("tbody tr").each(function() {
var date = jQuery(this).find('.data-category').val();
var value = 0;
var value2 = 0;
jQuery("td input:number",this).each(function() {
value += jQuery(this).find('.data-value').val();
});
jQuery("td input:number",this).each(function() {
value2 += jQuery(this).find('.data-value2').val();
});
if (date != '') {
chartData.push({
date: date,
value: value,
value2: value2
});
}
});
return chartData;
}
这是表格本身的代码:
<div id="data-table">
<tr>
<td><input class="data-cell data-category" value="2016-06-16" type="date" /></td>
<td><input class="data-cell data-value" value="4000" type="number" step="10" /></td>
<td><input class="data-cell data-value2" value="4000" type="number" step="10" /></td>
</tr>
<tr>
<td><input class="data-cell data-category" value="2016-07-16" type="date" /></td>
<td><input class="data-cell data-value" value="1882" type="number" step="10" /></td>
<td><input class="data-cell data-value2" value="4000" type="number" step="10" /></td>
</tr>
<tr>
<td><input class="data-cell data-category" value="2016-08-16" type="date" /></td>
<td><input class="data-cell data-value" value="1809" type="number" step="10" /></td>
<td><input class="data-cell data-value2" value="4000" type="number" step="10" /></td>
</tr>
<tr>
<td><input class="data-cell data-category" value="2016-09-16" type="date" /></td>
<td><input class="data-cell data-value" value="1322" type="number" step="10" /></td>
<td><input class="data-cell data-value2" value="4000" type="number" step="10" /></td>
</tr>
<tr>
<td><input class="data-cell data-category" value="2016-10-16" type="date" /></td>
<td><input class="data-cell data-value" value="1122" type="number" step="10" /></td>
<td><input class="data-cell data-value2" value="4000" type="number" step="10" /></td>
</tr>
</div>
<br />
<input type="button" value="Add Row" onclick="addRow()" class="data-button" id="add-row" />
This is the jsfiddle for the project
编辑:这可能看似重复,但我并不是想要获得每列的总计。我正在尝试为每个输入日期的每个列获取总计,并且按顺序允许每个日期反映输入的先前日期的累计总数,对于第一列数值数据和第二列数值数据。如果我只是在表中添加输入的值以获得每列的总计,这将是无效的,这是我所建议的副本的问题,如果用户没有输入数据,则无法工作按时间顺序排列,即如果日期不在桌面上。