Массив, созданый в функцие не доступен нигде кроме тела функции
Зравствуйте. Столкнулся со странной проблемой:
В начале скрипта задаётся массив: var calend = new Object; calend.events = new Array(); после этого идёт подключение к XML файлу, данные передаются в эту функцию:
function ParseXML(Response) {
calend.doc = Response.responseXML.documentElement;
var events = calend.doc.getElementsByTagName("event");
var name, link, icon, img;
for (var i=0;i<events.length;i++) {
name = events[i].getElementsByTagName("name")[0].firstChild.nodeValue;
calend.events[i] = new Array();
calend.events[i]["name"] = name;
}
}
элемент calend.events[n] - недоступен за пределами функции. Если я сделаю alert(calend.events[0]["name"]); в parseXML то отоброзится ожидаемой содержимое из XML файла. Но если тоже самое набрать вне функции то cant read property 'name' of undefined... при этом другие параметры calend которые используются в других местах работают нормально. Совсем задолбавшись сделал простой пример:
var calendar = new Object();
calendar.events = new Array();
addArray(calendar.events);
addArray(calendar.events);
addArray(calendar.events);
function addArray(array) {
array[array.length] = new Array(array.length+array.length, array.length+array.length*array.length+array.length);
}
alert(calendar.events[3]);
работает как надо, массив calendar.events доступен из любого места... Не работает в последнем хроме и firefox. Может кто сталкивался с таким бредом, или я дурак какую-то простую ошибку не вижу? |
Для размышления:
var obj = {
array : []
},
foo = function(i) {
while(i--) {
obj.array[i] = i;
}
return obj.array;
};
foo(10);
alert(obj.array)
|
| Часовой пояс GMT +3, время: 03:43. |