日期:2014-05-16  浏览次数:20376 次

js写fusionchart 问题
我用的dwr+spring架构,在做报表的时候遇到问题,我用dwr后台请求数据然后拼接成一个fusioncharts所需要的字符串返回js文本里面,然后在js文本里面生成。
具体代码如下



//图表所要显示的div
var cpudiv =document.createElement("cpudiv");
cpudiv.id="cpudiv";
var chart = new FusionCharts ('web/systemChangeManager/CPUConsume/MSLine.swf', "ChartId","100%", "400", "0", "0");
//cpuStr 是生成图标数据的字符串xml
chart.setDataXML(cpuStr);
chart.render('cpudiv');
document.getElementById("health_img_div").appendChild(cpudiv);


可是这种方法在jsp页面上显示不出来,不知道什么问题!试了很多种方式也不好用!
如果要直接在jsp中定义script就可以!类似这样:

<div id="health_img_div">
<script type="text/javascript">
var chart = new FusionCharts  
  ( 'web/systemChangeManager/CPUConsume/MSLine.swf', "ChartId","100%", "400", "0", "0");
chart.setDataXML(cpuStr);
chart.render('health_img_div');
}


请问我在js中该怎样实现!谢谢了!


</script>


------解决方案--------------------
写在渲染元素内能成功是吧
不用多想,显然又是把脚本写到了全局并且在html元素前面,简单的解决办法

setTimeout(function(){
document.getElementById("health_img_div").appendChild(cpudiv);
},10);


------解决方案--------------------
这样试试
JScript code
function queryHealthSuccess(cpuStr) {
  var cpudiv =document.createElement("cpudiv");
  cpudiv.id="cpudiv";
  document.getElementById("health_img_div").appendChild(cpudiv);
  
  window.setTimeout(function(){  
    var chart = new FusionCharts (
       'web/systemChangeManager/CPUConsume/MSLine.swf', 
       "ChartId","100%", "400", "0", "0"
    );
    chart.setDataXML(cpuStr);
    chart.render('cpudiv');
   },1000);
 }