Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.01.2015, 19:07
Новичок на форуме
Отправить личное сообщение для Джангар Посмотреть профиль Найти все сообщения от Джангар
 
Регистрация: 17.12.2014
Сообщений: 7

Проблемы с массивом
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

Последний раз редактировалось Джангар, 03.01.2015 в 19:11.
Ответить с цитированием
  #2 (permalink)  
Старый 03.01.2015, 19:33
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,589

Джангар, Cannot read property 'grig' of undefined
jQuery(this).find('grig').text();
Ответить с цитированием
  #3 (permalink)  
Старый 03.01.2015, 20:14
Новичок на форуме
Отправить личное сообщение для Джангар Посмотреть профиль Найти все сообщения от Джангар
 
Регистрация: 17.12.2014
Сообщений: 7

Сообщение от Rise Посмотреть сообщение
Джангар, Cannot read property 'grig' of undefined
jQuery(this).find('grig').text();
'grig' - это НЕ элемент DOM!!!
'grig' - это свойство объекта obj_day!

не в 'grig' (и прочих) свойстве дело.

Внимательно читайте код, пожалуйста...
Ответить с цитированием
  #4 (permalink)  
Старый 03.01.2015, 20:21
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,589

Джангар, а откуда ошибка такая? Я только в одном месте вижу где оно используется.
Ответить с цитированием
  #5 (permalink)  
Старый 03.01.2015, 21:21
Новичок на форуме
Отправить личное сообщение для Джангар Посмотреть профиль Найти все сообщения от Джангар
 
Регистрация: 17.12.2014
Сообщений: 7

Сообщение от Rise Посмотреть сообщение
Джангар, а откуда ошибка такая? Я только в одном месте вижу где оно используется.
Аллах его знает откуда.... знал бы - не обращался

1. Парсинг XML-файлов проходит успешно
2. Массивы наполняются нормально
3. Массивы доступны в ФУНКЦИЯХ
4. НО недоступны в теле программы!

Моя задача: выполнить ShowDay(day_id) при загрузке страницы, но!!!!
При вызове функции из тела программы - массив arr_days пуст, длина 0!
При обращении в ф-ям getNextDay() и getPrevDay() через контролы (кнопочки), ShowDay(day_id) успешно выполняется (массив arr_days НЕ пуст!)...
Ответить с цитированием
  #6 (permalink)  
Старый 03.01.2015, 21:38
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,589

Джангар, при загрузке страницы данные еще в пути, поэтому массив пуст, надо вызывать ShowDay в success (после 28 строки), она вызывается когда данные получены.
Ответить с цитированием
  #7 (permalink)  
Старый 03.01.2015, 21:50
Новичок на форуме
Отправить личное сообщение для Джангар Посмотреть профиль Найти все сообщения от Джангар
 
Регистрация: 17.12.2014
Сообщений: 7

Замечательно! Работает! Осталось дизайн нарисовать....

Все таки как много зависит от понимания "философии" языка...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы со слайдером. Shupamen Работа 1 14.12.2013 23:12
проблемы с PagingToolbar serg3091 ExtJS 4 26.06.2013 09:33
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47
GridWindow, проблемы с массивом ... Blondink0 ExtJS 15 16.12.2008 20:08