javascript - 多次动画 Google 图表转换

标签 javascript google-visualization

我尝试多次为我的谷歌折线图设置动画,但我的图表拒绝多次转换。在下面的示例中,它将显示第一个数据集并向右过渡到第四个数据集,跳过中间的两个数据集。我该如何解决此问题?

    <script type="text/javascript">
      var options;
      var chart;
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(prep);
      function prep(){
        chart = new google.visualization.LineChart(document.getElementById('chart'));
        options = {
            colors: ['Red','Purple','Blue'],
            animation:{duration: 1000,easing: 'linear'}
        };
        drawChart();
      }
      function triggerChart(data){
        chart.draw(data, options);
      }
      function drawChart(){

        data = google.visualization.arrayToDataTable([
          ['Hour', 'First', 'Second', 'Third'],
          [1,1,2,3],
          [2,2,3,4]
        ]);
        triggerChart(data);

        data = google.visualization.arrayToDataTable([
          ['Hour', 'First', 'Second', 'Third'],
          [3,2,3,4],
          [4,5,6,7]
        ]);
        setTimeout(function(){triggerChart(data);},2000);

        data = google.visualization.arrayToDataTable([
          ['Hour', 'First', 'Second', 'Third'],
          [5,5,6,7],
          [6,7,8,9]
        ]);
        setTimeout(function(){triggerChart(data);},4000);

        data = google.visualization.arrayToDataTable([
          ['Hour', 'First', 'Second', 'Third'],
          [7,11,12,13],
          [8,12,13,14]
        ]);
        setTimeout(function(){triggerChart(data);},6000);
      }
    </script>
    <div id="chart" style="width:900px;height:600px"></div>

最佳答案

函数 triggerChart() 总是使用相同的数据集调用,并且它是最后一个。

您必须将 data 的分配移至 setTimeout 调用。

更新:此行为的原因:data 是全局变量,执行顺序为:

  • 第一个数据赋值
  • 调用triggerChart(data)
  • 第二个数据分配
  • 第三个数据赋值
  • 第四个数据赋值
  • 调用triggerChart(data)
  • 调用triggerChart(data)
  • 调用triggerChart(data)

另一个解决方案是将 data 排除在 setTimeout() 之外,但在这种情况下,您必须使用 4 个不同的数据变量名称。例如 data1data2data3data4

关于javascript - 多次动画 Google 图表转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23525639/

相关文章:

javascript - 是否有一个库可以在所有浏览器中创建 JavaScript 1.8 兼容性?

javascript - 读取 URL 查询参数值 (Vue.js)

javascript - 为缩略图分配 .src 的问题

javascript - 将带有 JavaScript 函数的 javascript 数组转换为 json 并返回

javascript - 谷歌图表工具提示

html - 如何在html中排列这5个图表?

php - 显示包含来自数据源的信息的 Google 图表

javascript - 为什么我的 Google 图表不显示?

twitter-bootstrap - Bootstrap 响应式图表和图形

javascript - HTML 5 Canvas addHitRegion 不适用于 iOS(未定义不是函数)