【问题标题】:Get CanvasJS chart's instance from DOM element从 DOM 元素中获取 CanvasJS 图表的实例
【发布时间】:2021-10-03 23:34:08
【问题描述】:

我的图表定义为

var myChart = new CanvasJS.Chart("myChartContainer", {
    animationEnabled: true,
    axisY :{
        includeZero: false,
        gridColor: "rgba(140, 140, 140, 1)"
    },
    toolTip: {
        shared: true,
        content: false
    },
    legend: {
        fontSize: 13
    },
    data: myChartData.json
});

而且我需要通过其 DOM 元素访问图表的实例(我不想将 myChart 设为全局变量。我已尝试使用这两种方法检索图表的实例

var charr = $('#myChartContainer').CanvasJS()
var charr = $('#myChartContainer').CanvasJSChart()

但它们都不起作用。第一个抛出jquery-3.4.1.min.js:2 Uncaught TypeError: $(...).CanvasJS is not a function,第二个只是返回一个未定义的对象。我正在使用 CanvasJS 的 jQuery 插件。

我错过了什么?如何检索图表的实例?

仅供参考,我已经看到this 的回答,但没有帮助。

【问题讨论】:

  • 你能解释一下为什么你不想让它成为一个全局变量吗?例如,您可以使用IIFE

标签: javascript jquery canvasjs


【解决方案1】:

根据您分享的代码示例,您似乎正在使用 CanvasJS 的 jQuery 插件,但创建图表 JavaScript 方式。根据CanvasJS jQuery documentation,您可以将图表创建为$("#myChartContainer").CanvasJSChart(chartOptions);,然后您可以获得对图表的引用为$("#myChartContainer").CanvasJSChart();。工作示例如下所示。

var options = {
  title: {
     text: "CanvasJS jQuery Chart"
  },
  data: [{
    type: "line",
    dataPoints: [
        { x: 1, y: 63 },
        { x: 2, y: 69 },
        { x: 3, y: 65 },
        { x: 4, y: 70 },
        { x: 5, y: 71 },
        { x: 6, y: 65 },
        { x: 7, y: 73 },
        { x: 8, y: 96 },
        { x: 9, y: 84 },
        { x: 10, y: 85 },
        { x: 11, y: 86 },
        { x: 12, y: 94 },
        { x: 13, y: 97 },
        { x: 14, y: 86 },
        { x: 15, y: 89 }
    ]
   }]
};
$("#chartContainer").CanvasJSChart(options);

var chart = $("#chartContainer").CanvasJSChart(); //Get reference to the chart instance
/*chart.options.title.text = "New Title";
chart.render();*/
<script src="https://canvasjs.com/assets/script/jquery-1.11.1.min.js"></script>
<script src="https://canvasjs.com/assets/script/jquery.canvasjs.min.js"></script>
<div id="chartContainer" style="height: 300px; width: 100%;"></div>

【讨论】:

  • 好吧,如果图表是用 JavaScript 方式创建的,那么就没有办法获取图表的实例了吗?只有 jQuery 方式才有可能?如果我将图表更改为使用 jQuery 创建而不是现在的样子,是否有任何“副作用”我应该知道?还是他们的行为方式完全相同?
  • CanvasJS jQuery 插件只是 CanvasJS JavaScript 图表的包装器——它让你可以用 jQuery 的方式做事。除了使用方式之外,它们之间没有任何副作用或任何区别。如果图表实例是使用 jQuery 插件 ($("#myChartContainer").CanvasJSChart(chartOptions);) 创建的,则 jQuery 插件允许您使用 $("#myChartContainer").CanvasJSChart(); 获取图表实例。
猜你喜欢
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2016-02-21
  • 2022-12-05
  • 2014-11-24
  • 2022-01-17
  • 1970-01-01
  • 2012-12-10
相关资源
最近更新 更多