2016-01-22 27 views
0

這是相關的代碼,我有:如何在循環中使用highcharts製作多個圖表?

 <script> 
      titles = <?php echo json_encode($graphTitles)?>; 
      //Loop through the graphs 
      for (var graphNO = 0; graphNO < titles.length; graphNO++) 
      {        
       //CREATE NEW CONTAINER 
       var container = document.createElement('div'); 
       document.body.appendChild(container);er); 

       dates = <?php echo json_encode($recivedDates);?>[titles[graphNO]]; 
       //I EXTRACT A FEW MORE ARRAYS THE SAME METHOD 
       $(function() 
       { 
        $(container).highcharts({ 
         title: { 
          text: titles[graphNO] 
         }, 
         xAxis: { 
          categories: dates 
         }, 
         series: [{ 
          type: 'column', 
          color: 'gold', 
          name: 'Created Issues', 
          data: createdIssues.map(Number) 
         }, 
         //MORE COLUMN'S AND SOME SPLINES. IT ALL WORKS AS EXPECTED 
        }); 
       }); 
      } 
     </script> 

我沒有要發佈的所有代碼,只是讓它凌亂,我所期待的這個代碼做的是:

graphNO具有價值爲2,我認爲它會循環兩次(它做的),爲每個循環創建一個容器(它的作用),然後爲每個循環繪製一個不同的圖,它在它剛剛創建的容器中執行(但是它只是繪製第二個圖)。

我不知道什麼是錯的,但是關於如何解決這個問題的任何想法,或者關於如何在一個循環中創建多個圖形的任何想法都會很有幫助。

此外,這是我製作的第一個網站,所以我還沒有使用JavaScript,PHP或者HTML多一天,所以很抱歉,如果它真的很明顯,我在這個上找不到任何東西。

回答

2

我得到了它,從網絡上嘗試複雜的東西,沒有工作了一天之後,我最終想,如果我刪除的功能,以便而不是會發生什麼:只是

   $(function() 
      { 
       $(container).highcharts({ 
        title: { 

我有:

   $(container).highcharts({ 
        title: { 

而且一切都很完美。我不知道爲什麼,可能是因爲jquery如何處理函數,我不知道,我甚至不知道我使用的是jQuery,直到一個小時之前。但是,如果任何人想要做類似的事情,它的工作原理,並隨時告訴我爲什麼,它的作品。

1

Swikrit Khanal的答案確實有效,因爲函數不再被覆蓋。當你將它全部包裝在函數中時,該函數會在構建下一個圖形時覆蓋它自己,因此只會留下最後一個圖形。

貝婁是一種使用循環並在不刪除函數的情況下構建多個圖形的方式,而是唯一命名它。

for(v=0; v < 5; v++){ 
var container = "#container"+v; 
var func_name = "container"+v; 
func_name = function() { 
    $(container).highcharts({ 
    }) 
} 
func_name() 
} 
+0

我有跟隨這個,我能夠循環但它只打印出最後一個圖表,所以任何想法打印出所有圖表? –

+0

嘿嘿,你的問題是'func_name'正在覆蓋自己。這是一個多圖的例子,使用高圖jsfiddle作爲基礎。 http://jsfiddle.net/q7p94xjy/ –

相關問題