2013-09-23 75 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使错误发生。

相关问题