0

我正在尝试更改 Dygraph GVizChart 列的可见性。

这有效:

function drawChart() {
  data = getData();
  window.chart1 = new Dygraph.GVizChart(
       document.getElementById('dygraphs')).draw(data, {
    });
  }

这也有效:

function drawChart() {
  data = getData();
  window.chart1 = new Dygraph.GVizChart(
       document.getElementById('dygraphs')).draw(data, {
            visibility: [false, true, true, true]
    });
  }

但是在里面drawChart,在那段代码之后,当我添加以下几行时,

function drawChart() {
  data = getData();
  window.chart1 = new Dygraph.GVizChart(
       document.getElementById('dygraphs')).draw(data, {
    });
    window.chart1.setVisibility(0, true);
    window.chart1.setVisibility(1, false);
  }

我得到错误:

未捕获的类型错误:无法调用未定义的方法“setVisibility”。画图

读完这个问题后,我想可能chart1在执行时还没有准备好。所以我添加了这个功能:

    function showChange() {
        alert('show chart1:' + window.chart1);
        window.chart1.setVisibility(3, false);
    }
   
  <a href="#" onclick='showChange();return false;'>showChange</a>

但是当我点击showChange链接时,我得到同样的错误:

未捕获的类型错误:无法调用未定义的方法“setVisibility”

警报窗口说:

显示图表1:未定义

4

1 回答 1

2

new Dygraph.GVizChart()返回一个对象。.draw()才不是。

你想要更多类似的东西:

window.chart1 = new Dygraph.GVizChart(document.getElementById('dygraphs'));
window.chart1.draw(data, {});

您还会遇到问题,因为 dygraphs GViz 包装器没有setVisibility()方法。您需要获取底层 Dygraph 对象才能使您的代码正常工作:

function showChange() {
    alert('show chart1:' + window.chart1);
    window.chart1.date_graph.setVisibility(3, false);
}
于 2013-03-08T00:19:48.290 回答