Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Инструкции цикла не хотят работать. (https://javascript.ru/forum/misc/33090-instrukcii-cikla-ne-khotyat-rabotat.html)

AlterEgo 09.11.2012 19:10

Инструкции цикла не хотят работать.
 
Здравствуйте, собственно сабж. Использовал циклы для наполнения массива данными, но скрипт отказался работать. Консоль Хрома ругается на переменную i, в цикле while. Говорит - невозможно прочесть свойство неопределенного. Хотя переменную объявил заранее. (считаю что на переменную i, т.к. при изменении её значения в ошибке менялись заключённые в 'кавычках' значения)
Код:

TypeError: Cannot read property '0' of undefined
Непосредственно та часть скрипта в которой замечена ошибка:

$(document).ready(function DownloadPageText(){
    var url = Array ['index.php?id=15','index.php?id=14','index.php?id=32','index.php?id=16','index.php?id=17','index.php?id=18','index.php?id=19','index.php?id=20'];
    var i = 0;             
      while(i<9){                                       
      var request = new XMLHttpRequest();
      request.open('GET', url[i]);
      request.onreadystatechange = function(){if(request.readyState === 4 && request.status === 200){Text[i] = request.responseText}}
      request.send(null);
      i++;
    };
  }

Замечу что Хром не ругается на эту же часть кода, но без $(document).ready()

a_l 09.11.2012 19:30

alert(typeof url);​

melky 09.11.2012 19:38

Цитата:

Сообщение от AlterEgo
var url = Array ['index.php?id=15','index.php?id=14','index.php?id=32','index.php?id=16','index.php?id=17','index.php?id=18','index.php?id=19','index.php?id=20'];

это что за бред?

AlterEgo 09.11.2012 20:11

да, согласен - бред, видно на автомате написал, привычка с паскаля)
можете тогда подсказать, как нужно доработать код, что бы он правильно записывал в массив Text полученные данные?
А то теперь он вместо обращения к адресам из массива url обращается к странице undefined
Извиняюсь за глупые вопросы)

melky 09.11.2012 20:28

как-то так. только не забывайте, что Text наполнится , когда данные придут.
var Text = [];

$(document).ready(function DownloadPageText () {

    var url = ['index.php?id=15','index.php?id=14','index.php?id=32','index.php?id=16','index.php?id=17','index.php?id=18','index.php?id=19','index.php?id=20'];
    var i = 0; 
            
    while(i < url.length){                  
                     
      var request = new XMLHttpRequest();

      request.open('GET', url[i]);

      request.onreadystatechange = (function (i) { 
        return function () { 
            if(this.readyState === 4 && this.status === 200){ 
                Text[i] = this.responseText;
            }
        };
      })(i); 

      request.send(null);
      i++;
    };
  }

AlterEgo 09.11.2012 22:56

melky,Дзен-трансгуманист
Спасибо за помощь!


Часовой пояс GMT +3, время: 12:43.