Javascript 为什么google图表函数在';函数中有什么?
我试图让我的谷歌图表显示一旦他们点击标签链接,但谷歌图表不显示 我把谷歌图表代码包括在Javascript 为什么google图表函数在';函数中有什么?,javascript,jquery,google-visualization,Javascript,Jquery,Google Visualization,我试图让我的谷歌图表显示一旦他们点击标签链接,但谷歌图表不显示 我把谷歌图表代码包括在ChartlyDaily中。当它在ChartDaily函数之外时,它可以工作,但在内部则不行 <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript">
ChartlyDaily
中。当它在ChartDaily
函数之外时,它可以工作,但在内部则不行
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
function ChartDaily(){
google.setOnLoadCallback(drawChartDaily);
function drawChartDaily() {
var chart_data = ['3',7];
alert(chart_data);
var data = google.visualization.arrayToDataTable([
['Scoring Activity', 'Points given'], chart_data]);
var options = {
title: 'Semis overall scoring activity'
};
var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
}
jQuery(document).ready(function() {
$('#tabs > div').hide();
$('#tabs div:first').fadeIn('slow');
$('#tabs ul li:first').addClass('active');
$('#tabs ul li a').click(function(){
$('#tabs ul li.active').removeClass('active'); // <== Only what you need
$(this).parent().addClass('active');
var selectedTab=$(this).attr('href');
$('#tabs > div').fadeOut('slow', function() { // <== Use a callback
$(selectedTab).delay(10).fadeIn('fast'); // <== add a delay
});
return false;
});
$('#menu_tab1').click(function(){
ChartDaily(); // supposed to show the chart
});
$('#menu_tab2').click(function(){
alert('tab-2 got clicked!!');
});
$('#menu_tab3').click(function(){
alert('tab-3 got clicked!!');
});
$('#menu_tab4').click(function(){
alert('tab-4 got clicked!!');
});
});
</script>
<div id="chart_div" style=" margin-left:-280px;width: 800px; height: 500px;"></div>
load(“可视化”、“1”、{packages:[“corechart”]});
功能图表每日(){
setOnLoadCallback(drawChartDaily);
函数drawChartDaily(){
var图表_数据=['3',7];
警报(图表和数据);
var data=google.visualization.arrayToDataTable([
[‘评分活动’、‘得分’、图表数据];
变量选项={
标题:“半决赛总得分活动”
};
var chart=new google.visualization.PieChart(document.getElementById('chart_div');
图表绘制(数据、选项);
}
}
jQuery(文档).ready(函数(){
$('#tabs>div').hide();
$('tabs div:first').fadeIn('slow');
$('#tabs ul li:first').addClass('active');
$('a')。单击(函数(){
$('#tabs ul li.active').removeClass('active');//这里有一些东西可以重新开始
function GoogleChart() {
this.chart_data = ['3',7];
this.data_table = google.visualization.arrayToDataTable([['Scoring Activity', 'Points given'], chart_data]);
this.options = {
title: 'Semis overall scoring activity'
};
this.chart = new google.visualization.PieChart(document.getElementById('chart_div'));
}
GoogleChart.prototype.drawChartDaily = function () {
this.chart.draw(this.data_table, this.options);
};
$(function () {
function myOnLoadCallback() {
var googleChart = new GoogleChart();
$('#menu_tab1').click(function(){
googleChart.drawChartDaily();
});
}
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(myOnLoadCallback);
});
编辑:已更改为未经测试的示例。Google loader在从其他函数内部调用时遇到问题,因此最好让它自己运行。请尝试以下操作:
function ChartDaily () {
var chart_data = ['3',7];
var data = google.visualization.arrayToDataTable([
['Scoring Activity', 'Points given'],
chart_data
]);
var options = {
title: 'Semis overall scoring activity'
};
var chart = new oogle.visualization.PieChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
function init () {
$('#menu_tab1').click(function(){
ChartDaily();
});
}
google.load("visualization", "1", {packages:["corechart"], callback: init});
在什么函数之后???因为我需要图表ChartDaily函数,其中包括单击选项卡时的drawchartDaily函数抱歉,我有点误导您。我发现必须纠正的另一个问题是google.setOnLoadCallback(drawchartDaily);只应调用一次。为了回答您的评论问题,我也引用了drawChartDaily函数。那么我的错误在哪里。我如何调用在单击时打印图表的函数。如果异步加载图表脚本,我们应该如何加载google图表?脚本加载完成后,我们需要调用google.load.但由于某种原因,如果图表位于命名函数中,它将无法工作???我对该主题的了解现在已经过时好几年了,但当我上次使用可视化API时,从函数内部调用加载器时,加载器无法正常工作。我始终无法理解为什么会出现这种情况。加载器完全可能会不过,es现在已经修复。如果它们没有修复,我建议您用一个示例来回答自己的问题。这个问题尚未修复,我已将其隔离,以了解它在命名函数中不起作用,但是在具有setTimeout的匿名函数中,如setTimeout(function(){google.charts.load…etc},0)
,它确实有效,但不是很有用。不过还是谢谢