Показать сообщение отдельно
  #1 (permalink)  
Старый 13.10.2012, 13:46
Новичок на форуме
Отправить личное сообщение для alex_oo7 Посмотреть профиль Найти все сообщения от alex_oo7
 
Регистрация: 20.10.2010
Сообщений: 8

Функция не меняет глобальные переменные, считая их локальными
var a_id, a_art, a_tit;
var n = 0;
var e = 0;
 
function fill(){
    try {
        VK.api("audio.get", {offset:"0"}, function(data) {  
            if (data.response) {
                n = (data.response).length;
                document.getElementById("i").value +=  n + "\n";
                a_id = new Array(n);
                a_art = new Array(n);
                a_tit = new Array(n);
                for (var i = 0; i < n; i++) {
                    a_id[i] = data.response[i].aid;
                    a_art[i] = data.response[i].artist;
                    a_tit[i] = data.response[i].title;
                                        document.getElementById("i").value +=  a_id[i] + "\n";
                }
            } else {
                e = 2;
            }
        });
    } catch (err) {
        e = 2;
    }   
}
 
fill();
document.getElementById("i").value +=  a_id[23] + "\n";
document.getElementById("i").value += n + " " + e;
for (var i = 0; i < n; i++)
    document.getElementById("i").value +=  a_id[i] + " " + a_art[i] + " " + a_tit[i] + "\n";


После выполнения функции fill() массивы остаются нетронутыми, а переменная n = 0.
Однако, если проследить выполнение функции, то можно заметить, что он выполняется корректно и верно заполняет массивы.
Ответить с цитированием