iframe中jqplot(jquery绘图)不能自动加载,调用resetZoom()方法后才显示。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iframe中jqplot(jquery绘图)不能自动加载,调用resetZoom()方法后才显示。相关的知识,希望对你有一定的参考价值。

这是iframe:
<iframe id="cf" src="../../FusionCharts/jquery/zoom.jsp" width="340" height="135" scrolling="no" frameborder="0" ></iframe>

这是zoom.jsp:
(引入css、js)
<script type="text/javascript" language="javascript">
$(document).ready(function()
$.jqplot.config.enablePlugins = true;
var goog1 = [['08/10/2011',96.0],['08/11/2011',84.0]];
var goog2= [['08/10/2011',96.0],['08/11/2011',84.0]];
plot = $.jqplot('cfChart', [goog1,goog2],

legend:
show:true,
location: 'sw',
xoffset: 1,
yoffset: 1,
renderer:$.jqplot.EnhancedLegendRenderer
,
series: [
label:'个人', label:'群体'
],
seriesDefaults:
lineWidth: 1.5,
markerOptions:
show:true,
size:4

,
seriesColors:['#cc6666', '#66cc66'],
axes:
xaxis:
renderer:$.jqplot.DateAxisRenderer,
min:'August 1, 2011',
tickInterval: "10 days",
tickOptions:formatString:"%Y/%#m/%#d"
,
yaxis:
show: false,
ticks: [20,40,60,80,100],
tickOptions:formatString:'%d'

,
cursor:zoom:true,
highlighter:show:true
);
);
</script>
<div style="padding-top:0px"><button value="reset" type="button" onclick="plot.resetZoom();">重置</button></div>
<div id="cfChart" style="margin-top:0px; margin-left:0px; width:340px; height:135px;"></div>
哪位大侠知道,或有类似经验,麻烦知道下,谢谢了!!!

重要补充:::上述内容是在第二选项卡(指数)里面的,页面默认显示第一选项卡(构成),在页面还没有加载完成时直接点击第二选项卡,上面内容顺价加载,但是如果等页面加载完了再点击第二选项卡却是空白,上面的内容却不显示!!!

急急急~~~

问题已解决:上述代码放到了display:none的div里面了,去掉display:none就OK!
又能解释一下的送分了。。。。

jqplot图在非默认Tab页时,需要用plot1.replot();方法重新渲染,可以在切换tab时调用replot();方法,参考:
$('#tabs').bind('tabsshow', function(event, ui)
if (ui.index == 1 && plot1._drawCount == 0)
plot1.replot();

else if (ui.index == 2 && plot2._drawCount == 0)
plot2.replot();

);
可查看examples下面的hiddenPlot.html
参考技术A $(document).ready(function()

// 代码
)
或者:
$(function()
// 代码
)

前端通过jqplot绘制折线图

首先需要下载jqplot需要的js与css文件,我已近打包好了,需要的可以下载

接下来导入其中关键的js与css如下,

<link href="css/jquery.jqplot.min.css" rel="stylesheet" />
<script src="js/jquery.min.js"></script>
<script src="js/jquery.jqplot.min.js"></script>
<script src="js/jqplot.canvasTextRenderer.js"></script>
<script src="js/jqplot.canvasAxisLabelRenderer.js"></script>

html部分

<div id="chart" style="width:500px;height:300px;" ></div>  这里注意其中的id与之后js的$.jqplot(‘chart‘,data,option)中的第一个参数对应即可

js部分

$(function () {
    var cosPoints = [];
        for (var i=0; i<2*Math.PI; i+=0.4){ 
        cosPoints.push([i, 2.5 + Math.pow(i/4, 2)]); 
    }
    $.jqplot(‘chart‘, [[1,3,4,5,6],[5,6,8,9,12],[3,6,7,8,9],cosPoints], {//$.jqplot(‘chart‘,data,option); target:要显示的位置。data:显示的数据。options:其它配置
    stackSeries: false, // 如果置为true并且有多个分类(如果是折线图,就必须多于一条折线), 那么每个分类(折线)在纵轴上的值为其前所有分类纵轴值总和与其纵,轴值相加值(eg,当前分类纵轴值为Y3
    title: ‘我的折线图‘, 
    axes: {
        xaxis: {
         label: ‘X轴‘, //指定X轴的说明文字
         pad:0
        },
        yaxis: {
         label: ‘Y轴‘,  
         pad:0
        }
    },
    series:[
                {
                    lineWidth: 3, //指定折线的宽度
                    markerOptions: { style: "dimaond" } //指定折线的样式
                },
                {
                    //showLine: false, //指定是否显示线条
                    markerOptions: { size: 5, style: "circle" } //size设置每个节点的大小
                },
                {
                    markerOptions: { style: "filledSquare" }
                },
                {
                    showMarker:false
                }  //分别对应4条线
            ],

    grid: {  
        gridLineColor: ‘#978887‘    // 设置整个图标区域网格背景线的颜色  
    }
});
});

其中关键的我在代码中已近说明了,需要代码的小伙伴可以自行下载

链接:http://pan.baidu.com/s/1pKIX41d 密码:2as7

以上是关于iframe中jqplot(jquery绘图)不能自动加载,调用resetZoom()方法后才显示。的主要内容,如果未能解决你的问题,请参考以下文章

如何在不重绘图表的情况下刷新 jqplot 条形图

前端通过jqplot绘制折线图

如何使用jQuery或jqPlot自定义PrimeFaces条形图属性

dateaxisrender jqplot xticks 宽度不一致

为啥我不能使用 iframe 对象和 jQuery 遍历这个元素?

iframe 不能像它的 jQuery 对话框容器一样宽