Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么spurios alert()会导致Google图表正确绘制?_Javascript_Google Visualization - Fatal编程技术网

Javascript 为什么spurios alert()会导致Google图表正确绘制?

Javascript 为什么spurios alert()会导致Google图表正确绘制?,javascript,google-visualization,Javascript,Google Visualization,我试图在同一个网页上画两个谷歌图表 第二个图表的代码如下所示 function chart2() { /* second chart (scatter plot) */ var data2 = new google.visualization.DataTable(); data2.addColumn('number', 'Date'); data2.addColumn('number', 'Sold Price'); var map = /*[[${worthTemplat

我试图在同一个网页上画两个谷歌图表

第二个图表的代码如下所示

function chart2() {
  /* second chart (scatter plot) */
  var data2 = new google.visualization.DataTable();
  data2.addColumn('number', 'Date');
  data2.addColumn('number', 'Sold Price');

  var map = /*[[${worthTemplateData.pricingInfo['marketHistory']}]]*/ [];
  map.forEach(function (item) {
     data2.addRows([ [item.date, item.origPrice] ]);
  });

  alert('Please wait');

  var options = {
     width: 900,
     height: 500,
     chart: {
     title: 'Price History',
     subtitle: 'For similar-size units'
     },
     hAxis: {title: 'Date'},
     vAxis: {title: 'Sold Price'}
  };

  var chart2 = new google.charts.Scatter(document.getElementById('google-chart2'));
     chart2.draw(data2, google.charts.Scatter.convertOptions(options));
}
它起作用了

但一旦我删除
警报('Please wait')行,它不再工作了!图表应显示的屏幕区域为空

我怀疑存在一些时间问题,即使JS可能是“单线程的”

更令人费解的是,如果我更改顺序,只有其他图表加载:

google.load("visualization", "1.0", {packages: ["bar", "scatter"]});
google.setOnLoadCallback(drawCharts);

function drawCharts() {
        chart2();
        chart1();
}

解决方法是什么?

绘制多个材质图表时出现问题。 您可以切换到经典散点图:
google.Charts.Scatter
->
google.visualization.ScatterChart
或延迟尝试:

function doSetTimeOutDrawChart(chart, data, options, delay){
    setTimeout(function () { 
        chart.draw(data, options);
    }, delay);
} 
如本例所示:

我对谷歌图表一无所知,但我首先要看的是,在发出警报之前,是否已经加载了所有内容。即“google-chart2”。可能您有一些时间问题。。。dom或请求JavaScript位于页面底部。所有内容都已加载。另一个解决方案来自->对于第一个建议,我得到了错误--TypeError:google.visualization.ScatterChart不是一个构造函数您需要加载
google.load(“visualization”,“1”,{packages:[“corechart”]
我试过了,但没有成功。现在我决定删除其中一个图表。您可以发布有关图表的完整代码或提供JSFIDLE链接。