2013-05-28 48 views
1

我在使用Highcharts圖書館的程序中顯示了一些數據。兩個非常相同的代碼片段給出了非常不同的結果(第一,有2行,沒有顯示任何內容,第二行有1行,顯示了我的期望)。爲了確保我沒有做錯任何事在圖表的配置我複製下面的代碼from the highcharts website,離開它完全一樣,只是它產生了意想不到的結果:動態創建的海圖沒有顯示酒吧/行

var chartinfo = { 
    chart: { 
     type: 'bar' 
    }, 
    title: { 
     text: 'Fruit Consumption' 
    }, 
    xAxis: { 
     categories: ['Apples', 'Bananas', 'Oranges'] 
    }, 
    yAxis: { 
     title: { 
      text: 'Fruit eaten' 
     } 
    }, 
    series: [{ 
     name: 'Jane', 
     data: [1, 0, 4] 
    }, { 
     name: 'John', 
     data: [5, 7, 3] 
    }] 
} 

$("#" + graphid).highcharts(chartinfo); 

這會產生如下圖:

Generated graph

正如你所看到的(點擊圖片放大)是否具有預期的規模(0 - 7.5在範圍爲0-7)。我在highcharts.src.js(v3.0.1)的第14503行放置了一個斷點(使用Chrome),這是drawTracker函數的開始。

drawTracker被調用顯示正確(顯然)的圖形,但沒有被調用上述圖形。因此,在確定或執行比例尺和實際繪圖之間出現問題。

任何洞察問題將不勝感激。

編輯

看來這只是發生在頁面上的第一個圖形。當我切換它們(方法調用)時,第一個不顯示行,第二個顯示條(上面的代碼)。所以我想知道的是爲什麼第一張圖沒有顯示它的內容,第二張沒有顯示它的內容。

+0

我找到了解決方案。我會盡快回復,以便發現自己遇到這個問題的人可以得到幫助。 – Manuel

+0

可能它看起來像$(「#」+ graphid).highcharts(chartinfo);這一行和graphid變量。 –

+0

沒有問題不是這個。我多次檢查了一切,這是正確的。該圖顯示但線/條不顯示。我已經在下面發佈瞭解決這個問題的解決方案。 – Manuel

回答

0

其中圖表繪製通過的下一行代碼動態添加(大約相同的用於我的情況下的曲線圖的所有變體)的容器:

$('#' + container).html($('#' + container).html() + "<div class=\"graph\" id=\"" + graphid + "\"></div>"); 

這用來工作的時候所使用的Elycharts圖書館,但使用Highcharts這給了問題,該圖被正確繪製前的副本替換。我解決了這個問題通過執行以下操作:

$('#' + container).append("<div class=\"graph\" id=\"" + graphid + "\"></div>"); 

jQuery的append方法添加了新的HTML到現有而不觸及現有的HTML。這允許腳本完成線條/條紋/任何你想繪製的圖形。

+0

一般append()是更好的解決方案。 –

+0

正如我在這種情況下notieced! :) – Manuel