如何添加" for"在Highcharts系列中?

时间:2013-05-02 20:18:35

标签: javascript jquery highcharts

我有一个执行查询的.php文件,此查询根据结果添加文本字段,例如:

$query = mysqli_query($mysqli, "SELECT YEAR,PERIOD FROM users");
$num_users = mysqli_num_rows($query);

for($i=1; $i<=$num_users; $i++) {
   $row = mysqli_fetch_array($query);

   echo "<input type='text' id='year$i' name='year$i' value='".$row['YEAR']."'>";
   echo "<input type='text' id='period$i' name='period$i' value='".$row['PERIOD ']."'>";
}
echo "<input type='text' id='count' name='count' value='$num_users'>"

因此,这将输出x个输入,因此它可能是1到40个包含年份和期间的输入,然后我用以下内容捕获这些字段的值:

count = parseInt(document.getElementById('count').value);
for(i=1;i<=count;i++) {
    var custom = "year" + i;
    window[custom] = parseFloat(document.getElementById('year' + i).value);
    var custom = "period" + i;
    window[custom] = parseFloat(document.getElementById('period' + i).value);
 }

在此之前一切正常,我已经测试了上面的代码,并且所有输入值都保存在正确的变量中。

我怎么能有一个系列会显示这些年龄,记住数据的数量会发生变化?

我在想这样的事情:

series: [
  for(i=1;i<=count;i++) {
     {
        name: year + i,
        data: [period + i]
     }
  }
]

请帮帮我!!谢谢!

3 个答案:

答案 0 :(得分:1)

series必须是数组。如果你想使用一个填充该数组的函数,你可以创建一个这样的自执行函数(更新demo,它将输出到textarea):

series: (function(year, period, count) {
  var data = [];
  for(i=1;i<=count;i++) {
    data.push(
      {
        name: year + i,
        data: [period + i]
      }
    );
  }
  return data;
})(year, period, count)

这假设您有外部值yearperiodcount

答案 1 :(得分:0)

很容易。致电

  

addSeries()

在计数的每次迭代中将其推入高级图表。

更多信息 http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/members/chart-addseries/

  

$(function(){       $( '#集装箱')。highcharts({           xAxis:{               类别:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' ]           },           系列:[{               数据:[29.9,71.5,106.4,129.2,144.0,176.0,135.6,148.5,216.4,194.1,95.6,54.4]           }]       });

// the button handler
$('#button').click(function() {
    var chart = $('#container').highcharts();
    if (chart.series.length == 1) {
        chart.addSeries({
            data: [194.1, 95.6, 54.4, 29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4]
        });
    }
}); });

答案 2 :(得分:0)

感谢所有人,但我找到了一个更简单的解决方案:

var year = new Array();

for(i=1;i<=count;i++) {
  var custom = "year" + i;
  window[custom] = parseFloat(document.getElementById('year' + i).value);
  year.push(document.getElementById('year' + i).value);
}
// Highcharts
series: [{
   name: 'Pacientes',
   data: year
}