Проблемы с массивом
var arr_days = [], arr_years = []; var today = new Date(); var cur_day = today.getDate(); var cur_month = today.getMonth(); var cur_year = today.getFullYear(); var day_id; day_id = 0; cur_month = cur_month + 1; today1 = cur_day+'.'+cur_month+'.'+cur_year; jQuery(function(){ jQuery.ajax({ type: "GET", // метод передачи данных, можно пропустить - по умолчанию и так get url: "http://joomla15.loc/modules/mod_buddcalendar/days.xml", // путь к файлу, который будем читать dataType: "xml", // тип данных, с которыми работаем success: function(xml) { // переменная названа xml. ее можно назвать как либо по другому jQuery(xml).find('day').each( function(){ var obj_day = {}; var id = jQuery(this).attr('id'); obj_day["grig"] = jQuery(this).find('grig').text(); obj_day["moon"] = jQuery(this).find('moon').text(); obj_day["holiday"] = jQuery(this).find('holiday').text(); arr_days.push(obj_day); //alert(obj_day); }); } }); }); $(document).ready(function () { alert(arr_days.length); //показывает 0!!!!!!!!!!!!!!!!!!! }); function getNextDay(){ alert(arr_days.length); //показывает 365!!!!!!!!!!!!!!!!!!! day_id = day_id + 1; if(day_id >= arr_days.length){ day_id = arr_days.length - 1; } showDay(day_id); } function getPrevDay(){ day_id = day_id - 1; if(day_id <= 0){ day_id = 0; } showDay(day_id); } function showDay(day_id){ //... код формирования myhtml... $("#xml-data").html(myhtml); } Пишу маленький модуль для joomla 1.5, который показывает буддийский календарь... При загрузке страницы д.б. загружен текущий день (или 0й элемент массива arr_days). Проблема: элементы массива доступны только в теле функций!... Uncaught TypeError: Cannot read property 'grig' of undefined |
Джангар, Cannot read property 'grig' of undefined
jQuery(this).find('grig').text(); |
Цитата:
'grig' - это свойство объекта obj_day! не в 'grig' (и прочих) свойстве дело. Внимательно читайте код, пожалуйста... |
Джангар, а откуда ошибка такая? Я только в одном месте вижу где оно используется.
|
Цитата:
1. Парсинг XML-файлов проходит успешно 2. Массивы наполняются нормально 3. Массивы доступны в ФУНКЦИЯХ 4. НО недоступны в теле программы! Моя задача: выполнить ShowDay(day_id) при загрузке страницы, но!!!! При вызове функции из тела программы - массив arr_days пуст, длина 0! При обращении в ф-ям getNextDay() и getPrevDay() через контролы (кнопочки), ShowDay(day_id) успешно выполняется (массив arr_days НЕ пуст!)... |
Джангар, при загрузке страницы данные еще в пути, поэтому массив пуст, надо вызывать ShowDay в success (после 28 строки), она вызывается когда данные получены.
|
Замечательно! Работает! Осталось дизайн нарисовать....
Все таки как много зависит от понимания "философии" языка... |
Часовой пояс GMT +3, время: 23:12. |