【问题标题】:Destroying chart.js is not working when chart created inside function - chart.destroy() is not a function在函数内部创建图表时,销毁 chart.js 不起作用 - chart.destroy() 不是函数
【发布时间】:2018-05-07 18:53:00
【问题描述】:

我正在使用一个函数来创建一个使用 chart.js 的图表。 不幸的是,每当我尝试调用 chart.destroy() 时,都会出现错误:

“chart.destroy() 不是函数”。 我的代码如下所示:

  var chart = {};
  createChart(x_axis_data, y_axis_data, chart); //Function creating chart

图表本身是在函数内部创建的:

chart = new Chart(document.getElementById(id),{....

图表创建成功。但是,我不能通过调用:chart.destroy 来删除图表。 我已经尝试过使用

window.chart.destroy()

没有任何成功。

【问题讨论】:

  • 好吧,让保存图表的变量成为全局变量,而不是某个函数的局部变量。如果您使用的是 jQuery,您可以在目标 <canvas> 元素上使用 .data("chart") 来获取现有的 Chart 实例(如果有)。
  • 不应该是我的变量已经是全局的吗?我在调用我的函数之前创建它并将它传递给我的函数。

标签: javascript charts html5-canvas chart.js


【解决方案1】:

设置window.chart =而不是依赖chart =的隐式函数。如果您在代码中使用严格模式,它应该会引发警告。

【讨论】:

  • 我仍然得到错误:window.chart.destroy 不是函数
  • 我发现了我的错误。我忘了使用:window.chart inside my function
【解决方案2】:

看看这个:https://github.com/chartjs/Chart.js/issues/1007

变化:

var myNewChart1 = new Chart(ctx1).Line(barChartData1, {animation: false});

收件人:

window.myNewChart1 = new Chart(ctx1).Line(barChartData1, {animation: false});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 2020-06-05
    • 2021-05-08
    • 1970-01-01
    相关资源
    最近更新 更多