2015-07-21 19 views
0

我正在嘗試在不同容器的同一網頁上顯示多個highcharts。我知道我可以複製粘貼一個標準的highcharts函數一堆時間來將許多圖形渲染到不同容器中的頁面,但是由於我想要顯示的高圖的數量將取決於從數據庫(在下面的例子中,圖表數量將等於@value)我最好只寫一個highcharts函數,並多次遍歷它,在每次迭代中,我希望將圖表選項設置爲不同的。我已經試過各種排列如下代碼:javascript顯示使用單個函數的多個Highcharts

for (i = 0; i <= <% @value %>; i ++){ 
    $(function (i) { 
     graphTitleArray = <% @markers.split(',') %> 
     graphTitle = graphTitleArray[i] 
     graphData = <% @array[i].to_json %> 
     switch(i){ 
      case 0: 
      containerNum = 'container0' 
      case 1: 
      containerNum = 'container1' 

      ... 
     } 
     $(containterNum).highcharts({ 
      title: { 
      text: graphTitle 
      } 
      series: [{ 
       name: 'something', 
       data : graphData 
      }] 
     //more options here 
     }) 
    } 
} 

嘗試這種類型的策略多次之後,我不能讓圖形渲染或獲取功能認識的「我」正確的值。有誰知道更好的方法來做到這一點? 謝謝!

回答

1

我認爲你選錯了容器。我在下面更正了它(假設值'container0'是容器的id),包括刪除不需要的case語句。

for (i = 0; i <= <% @value %>; i ++){ 
    graphTitleArray = <% @markers.split(',') %> 
    graphTitle = graphTitleArray[i] 
    graphData = <% @array[i].to_json %> 

    $('#container'+i).highcharts({ 
     title: { 
     text: graphTitle 
     } 
     series: [{ 
      name: 'something', 
      data : graphData 
     }] 
    //more options here 
    }) 
} 
+0

感謝您的回覆。當我嘗試使用這段代碼時,我得到一個錯誤,指出行graphData = <%@array [i] .to_json%>中的「未定義的局部變量或方法」i「。你知道爲什麼會發生這種情況嗎? – adub

+0

我認爲你不需要圍繞代碼的匿名函數。因爲你有它,並且你永遠不會真的把'i'的值傳遞給它,所以當函數在函數內運行'i'的值是''undefined''。我已經用我認爲正確的方式更新了我的答案。 –

+0

這仍然給我同樣的錯誤。 'i'的值在line graphTitle = graphTitleArray [i]中被識別,但是當我嘗試執行ruby代碼時,它會在下一行中給出錯誤 – adub