Javascript для подвешивания петли - PullRequest
0 голосов
/ 04 июля 2011

Я пытаюсь использовать Google Charts API для создания диаграммы, в которой динамически присваиваются значения. Следующий код должен принимать массив значений и заполнять их диаграммой, но вместо этого висит и убивает страницу. Я предполагаю, что цикл for не заканчивается, но я не могу понять, что не так.

Есть идеи?

<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  function drawChart(values) {
    var data = new google.visualization.DataTable();
    data.addColumn('number', 'Value');
    data.addRows(values.length);

    for(i=0; i <= values.length; i+3) {
        data.setValue(values[i], values[i+1], values[i+2]);
    }

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data, {width: 400, height: 240, legend: 'none', gridlineColor: '#fff', chartArea:{left:0,top:20}});
  }

  function stockFractal(){

  }

</script>

Ответы [ 3 ]

2 голосов
/ 04 июля 2011

Вы не увеличиваете переменную i в цикле for; Вы хотите i+=3 не i+3.

for (i=0; i <= values.length; i+=3)
1 голос
/ 04 июля 2011

Задача (s)

Вы правы, что цикл никогда не заканчивается.

Это потому что это:

for(i=0; i <= values.length; i+3) {

не увеличивается i. Он просто создает значение, которое является результатом добавления 3 к i ..., а затем отбрасывает это значение.

Также вероятно, что вы имели в виду <, а не <=, так как индексы массива идут от 0 до values.length - 1.

Я также рекомендую использовать var.


Решение

Запись:

for (var i = 0; i < values.length; i = i + 3) {

или просто:

for (var i = 0; i < values.length; i += 3) {
0 голосов
/ 04 июля 2011
for(i=0; i <= values.length; i+3) {

Должно действительно читать:

for(i=0; i <= values.length; i=i+3) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...