从函数内部操纵对象

时间:2017-09-28 17:47:20

标签: javascript function chart.js

我遇到了问题,需要一些帮助。 我使用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之外创建图表时,它可以工作。 我在这做错了什么? 如何从函数内部更新对象?

2 个答案:

答案 0 :(得分:1)

问题是您的变量仅存在于您的函数中。做点什么

function createchart(...) {
    var kdchart = ...
    ...
    return kdchart;
}

当你调用这个函数时,请在你可以找到的地方粘贴kdchart - 在window对象上没有其他地方

答案 1 :(得分:0)

这是因为变量kdChart的范围不是全局的。它一直存在,直到执行在该函数内部,否则它已经死了。

要么你可以全局创建它,要么在一个函数上创建该对象并返回,但你必须在你需要的任何地方调用该函数,而不是必须获得相同的参考。

创建Global对象,使其只有一个副本可供访问。