2

该图不绘制,控制台抛出这个:Uncaught Error: Invalid dimensions for plot, width = 1350, height = 0是错误。

我尝试在 JSFiddle 上重新创建错误但无法这样做,但是它应该类似于:JSFiddle

关于此错误的一些说明:

  • 有时在第一个 x 页面加载时,将绘制图表,然后在抛出该错误后它将停止。

  • 这是完整的错误:

    Uncaught Error: Invalid dimensions for plot, width = 1350, height = 0 jquery.flot.js:119

    Canvas.resize jquery.flot.js:119

    Canvas jquery.flot.js:98

    setupCanvases jquery.flot.js:1261

    Plot jquery.flot.js:674

    $.plot jquery.flot.js:3039

    visc_graph active-scripts.js:45

    (anonymous function) active-scripts.js:346

    k jquery.min.js:2

    l.fireWith jquery.min.js:2

    p.extend.ready jquery.min.js:2

    D jquery.min.js:2

它似乎从 jquery.flot 源中被抛出:

    Canvas.prototype.resize = function(width, height) {

        if (width <= 0 || height <= 0) {
            throw new Error("Invalid dimensions for plot, width = " + width + ", height = " + height);
Uncaught Error: Invalid dimensions for plot, width = 1350, height = 0
        }
  • 编辑:更多信息:与上面链接的 JSFiddle 不同,我正在使用该函数绘制多个图形 - 类似这样,但是,当我为每个placeholderdiv 创建单独的函数时,这并没有发生。

  • 从控制台调用图形功能,即visc_graph(2,3,'#placeholder');似乎工作正常:(

我已经为此苦苦挣扎了一段时间,因为我无法诊断出这种情况的实际原因是什么。任何关于我如何解决这个问题的意见都将不胜感激。

更新:

4

2 回答 2

5

当 Flot 无法确定占位符 div 的大小时,就会出现该错误。这可能以多种方式发生,但通常这意味着您$.plot在占位符位于 DOM 之前调用了它。

正如@Mark 建议的那样,如果您在$.plot文档准备好之前打电话,这可能会发生,但它也可能以其他方式发生。您的绘图是否保存在选项卡、手风琴、对话框或任何其他内容在页面加载时隐藏的小部件中?如果是这样,这很可能是通过将内容 div 留在 DOM 之外来实现的,这意味着绘图占位符也在 DOM 之外并且无法测量。

确实没有其他原因会出现此错误,因此如果您仍然没有看到问题,则需要发布更多代码 - 特别是 DOM 部分 - 以便我们了解正在发生的事情。

于 2013-07-21T14:00:46.133 回答
2

昨晚我遇到了同样的问题,我解决这个问题的方法是使用 css 设置占位符 div 大小,如下所示:

<style type="text/css">
   #placeholder{
      width:100%;
      height:200px;
  }
</style>

<div id="content" class="demo-container">
   <div id="placeholder" class="demo-placeholder"></div>
</div>

设置 div 大小后,它开始工作。

我希望这可以帮助你。

于 2013-07-20T18:45:48.210 回答