我的项目结构包含一个简单的index.gsp,其中应该呈现模板。模板本身有几个div,在渲染此模板时应绘制图表。 当我在index.gsp中的任何div中使用下面的脚本时,索引视图和图表将正确呈现。但是当我在模板中使用相同的脚本时,我会得到一个空白页面,下面是javascript错误。
模板渲染由formremote触发:
<g:formRemote name="myForm" on404="alert('not
found!')" update="content" url="[controller: 'charts', action:'generateChart']">
错误:
Uncaught TypeError: Cannot call method 'getElementsByTagName' of null
脚本:
<div id="myID">
<script>
google.load('visualization', '1', {'packages': ['geochart']});
google.setOnLoadCallback(drawIt);
function drawIt(){
console.log("B");
var data = google.visualization.arrayToDataTable([
['City', 'Population'],
['Berlin', 2761477],
['Freising', 1324110],
['Muenster', 959574],
['Muenchen', 907563],
['Neufahrn', 655875],
['Hof', 607906],
['Freiburg', 380181],
['Stuttgart', 371282],
['Kiel', 67370],
['Magdeburg', 52192],
['Erfurt', 38262]
]);
var options = {
height: 500,
width: 700,
region: 'DE',
displayMode: 'markers',
colorAxis: {colors: ['green', 'blue']}
};
console.log("D");
var chart = new google.visualization.GeoChart('myID');
chart.draw(data, options);
}
</script>
</div>
答案 0 :(得分:1)
您必须将元素传递给图表API:
var chart = new google.visualization.GeoChart(document.getElementById('myID'));
答案 1 :(得分:0)
放
<script type="text/javascript" src='https://www.google.com/jsapi?autoload={"modules":[{"name":"visualization","version":"1","packages":["corechart","table"]}]}'></script>
在头部。