Вопрос о Javascript - расширение Chrome - PullRequest
1 голос
/ 24 июля 2010
for(var p = 0; p < xmls.length; p++) {
    var feed = new google.feeds.Feed(xmls[p]);
    feed.load(function(result) {
//code

В приведенном выше коде, если я вывожу p вне функции feed.load, я правильно вижу, что p повторяется. Однако, если я выведу p внутри этой функции (где мне нужно получить к ней доступ), он останется равным 2 (что соответствует длине массива "xmls"). Я знаю, что это проблема с областью действия, но не как ее исправить.

Заранее спасибо!

1 Ответ

3 голосов
/ 24 июля 2010

Вам необходимо создать новую область, что означает новую функцию.

for(var p = 0; p < xmls.length; p++) {
    (function(p) {
         var feed = new google.feeds.Feed(xmls[p]);
         feed.load(function(result) {
                       // use p
         });
     })(p);
}
...