我遇到了问题,需要一些帮助。 我使用chart.js创建图表,我想用函数更新它们。
我有以下设置:
function createchart(obj){
var kdChart = new Chart(kdchart, {
type: 'line',
data: data,
options: options
});
现在我尝试使用第二个函数更新图表:
function updatechart(){
//collect new data...
kdChart.data.labels = datepoints;
kdChart.data.datasets[0].data = kdata;
kdChart.data.datasets[1].data = ddata;
kdChart.update();
}
现在我收到错误
TypeError:kdChart.data未定义
当我在createchart-function之外创建图表时,它可以工作。 我在这做错了什么? 如何从函数内部更新对象?
答案 0 :(得分:1)
问题是您的变量仅存在于您的函数中。做点什么
function createchart(...) {
var kdchart = ...
...
return kdchart;
}
当你调用这个函数时,请在你可以找到的地方粘贴kdchart - 在window对象上没有其他地方
答案 1 :(得分:0)
这是因为变量kdChart的范围不是全局的。它一直存在,直到执行在该函数内部,否则它已经死了。
要么你可以全局创建它,要么在一个函数上创建该对象并返回,但你必须在你需要的任何地方调用该函数,而不是必须获得相同的参考。
创建Global对象,使其只有一个副本可供访问。