2013-09-23 106 views
0

我在下面有兩個for循環循環JSON文件的函數。我遇到的問題是在barFactory函數中調用的第二個循環中,它僅返回數組中的最後一個項目。我如何解決這個問題,我在每次迭代時都會調用圖表對象來創建,所以不應該按照我的邏輯進行操作。JavaScript for循環僅返回數組中的最後一項

var looper = function(sec0, vz, lOrR) { 

    $('#' + lOrR + 'Title').text(sec0); 

    for (var i = 0; i < vz[0]['Areas'].length; i++) { 
     var tText = Object.keys(vz[0]['Areas'][i]); 
     var root = vz[0]['Areas'][i][tText][0]; 
     barFactory(root, sec0, lOrR, i, tText); 

    } 

    function barFactory(sec1, sec0, lOrR, i, tText) { 
     var dataName; 

     for (var j = 0; j < sec1[sec0].length; j++) { 
      charts.title.text = sec1[sec0][j]["Label"]; 
      dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1); 
      charts.series[0].name = dataName; 
      charts.series[0].data = [parseFloat(dataName)]; 
      chart = new Highcharts.Chart(charts); 
     } 
    } 
} 
+2

因此,您嘗試爲「Areas」數組中的每個項目創建一個新的Highchart。你想用圖表做什麼?它似乎沒有返回它或將它附加到DOM –

+0

我有單獨的部分,我沒有將其添加到DOM。繪製條形圖,但只繪製數組中的最後一個。 – Claude

+1

它不是「返回」任何東西;目前尚不清楚如何在沒有更多信息的情況下工作。 '圖表'也總是指同一件事情。 –

回答

0

幾件事情: - 芭芭拉說,我們不知道你正在改變renderTo參數 - 您正在使用圖表創建相同的對象,可能會導致一些錯誤

什麼我建議做:

var dataName = dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1); 
chart = new Highcharts.Chart(
    Highcharts.merge(charts, { 
     chart: { 
      renderTo: new_container_variable 
     }, 
     title: { 
      text: sec1[sec0][j]["Label"] 
     }, 
     series: [{ 
      data: [parseFloat(dataName)], 
      name: dataName 
     }] 
    }) 
); 

此外,AER你肯定:dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1); - sec1之後的路徑是正確的嗎?嘗試console.log(dataName);以確保您傳遞正確的值,並且Highcharts使錯誤發生。

相關問題