Массив, созданый в функцие не доступен нигде кроме тела функции
Зравствуйте. Столкнулся со странной проблемой:
В начале скрипта задаётся массив: 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, время: 17:47. |