【发布时间】:2017-09-22 17:09:43
【问题描述】:
在进行了一些搜索之后,我认为我已经接近解决了几次,可惜还是没有运气!
完全知道这篇文章是昨天创建的: React Chartjs, how to handle a dynamic number of datasets 是一个非常相似的问题,但遗憾的是没有答案。
我使用的是 Chart.JS 版本 2,并且有一个脚本可以处理 AJAX 请求以加载可变数量的数据集及其相应数据。
数据集标签和值实际上由脚本在表单中的文本输入中显示和访问。
大部分情况下访问所有内容都很好,但创建一个循环来创建数据集是我一直失败的地方。
我希望这可能只是一个简单的循环,但我无法让它工作,并且找到了其他几个解决方案,但尝试将他们的解决方案与我的脚本结合起来仍然没有运气。
脚本如下。 “GraphLabelString”输入与其他表单元素一样可以正常访问,但获取数据集标签和值的代码目前已被注释掉,因为一旦我让循环工作,我将越过那座桥。
非常感谢任何帮助。
function LoadProjectActivityGraph(ProjectRef, StartDate, EndDate)
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("ProjectActivityGraph").innerHTML = xmlhttp.responseText;
//GET THE VALUE OF THE GRAPH LABELS FORM INPUT
var GraphLabelString = document.forms.GraphData.GraphLabels.value;
//TURN THE VALUE OF THE ABOVE INTO AN ARRAY
var GraphLabelArray = GraphLabelString.split(",");
//GET THE VALUE OF THE TOTAL NUMBER OF DATASETS INPUTS
var GraphTotalDatasets = parseInt(document.forms.GraphData.TotalDatasets.value);
//SET THE GRAPH CONFIGURATION VALUES
var LineChartConfig = {
type: 'line',
data: {
labels: GraphLabelArray,
datasets:
[
for (i=0; i < GraphTotalDatasets; i++)
{
{
label: 'apples',
//label: document.forms.GraphData['GraphDatasetLabel'+i].value,
data: [12, 19, 3, 17, 6, 3, 7],
//data: [document.forms.GraphData['GraphDatasetValues'+i].value],
fill: false,
borderColor: "red",
backgroundColor: "red",
pointBackgroundColor: "#ffffff",
tension: 0,
},
}
]
}
};
var ctx = document.getElementById("ProjectActivityGraphCanvas").getContext("2d");
window.myLine = new Chart(ctx, LineChartConfig);
}
}
xmlhttp.open("GET", "ProjectManagement/HoursManagement_AJAX/Response_ProjectActivityGraph.asp?ProjectRef="+ProjectRef+"&StartDate="+StartDate+"&EndDate="+EndDate, true);
xmlhttp.send();
}
【问题讨论】:
-
您是否尝试过在
LineChartConfig之前执行循环,然后只执行datasets: array? -
感谢 Matt2 的建议。有点摆弄,但最终得到了它的工作。
标签: javascript ajax loops dynamic chart.js