Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.03.2010, 23:01
Аспирант
Отправить личное сообщение для underW Посмотреть профиль Найти все сообщения от underW
 
Регистрация: 31.03.2009
Сообщений: 81

Extjs и SetTimeout
Ext.get('id1').on('click', 
         function()
               {var a=Ext.Msg.alert("1","2");
			setTimeout('a.hide()',1000);
		                return a;});


вот есть такой кусочек кода, по логике, он должен привязывать к кнопке с id 'id1' событие click при котором показывается окошко, и которое должно исчезнуть через 1сек.

Но, получаю ошибку в вот этой строчке:

setTimeout('a.hide()',1000); - a is not defined.


Как побороть эту ошибку?
Ответить с цитированием
  #2 (permalink)  
Старый 07.03.2010, 23:10
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

setTimeout(function () {
    a.hide();
}, 1000);
Ответить с цитированием
  #3 (permalink)  
Старый 07.03.2010, 23:20
Аспирант
Отправить личное сообщение для underW Посмотреть профиль Найти все сообщения от underW
 
Регистрация: 31.03.2009
Сообщений: 81

Цитата:
В каком виде указывать первый параметр - в виде строки кода или функции - разницы нет.
цитата взята тут: http://javascript.ru/setTimeout.
Ответить с цитированием
  #4 (permalink)  
Старый 07.03.2010, 23:23
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

eval строки 'a.hide()' выполнится в глобальном контексте, а там объекта "a" нет.

(function () {

    var obj = {
        test: function () {
            alert(1);
        }
    };

    eval("obj.test()"); 

}());


function func(str) {
    eval(str);
}

(function () {

    var obj = {
        test: function () {
            alert(1);
        }
    };

    func("obj.test()"); // func вместо setTimeout

}());

Последний раз редактировалось Octane, 07.03.2010 в 23:36.
Ответить с цитированием
  #5 (permalink)  
Старый 07.03.2010, 23:40
Аспирант
Отправить личное сообщение для underW Посмотреть профиль Найти все сообщения от underW
 
Регистрация: 31.03.2009
Сообщений: 81

Octane, Вы правы - спасибо большое.

P.S. аналог для SetTimeout в extjs: метод defer(). Перепишем пример, на чистом extjs:

Ext.get('id1').on('click',
                 function()
                      {var a=Ext.Msg.alert("1","2");
		
			(function(){a.hide();}).defer(1000);

Последний раз редактировалось underW, 08.03.2010 в 00:04.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не пойму под какой лицензией распространяется Extjs kostiaGt ExtJS 11 23.09.2014 13:30
ExtJs - Перевод книги "Lerning ExtJs" MaXyC ExtJS 17 22.06.2012 17:41
Программист PHP + ExtJS, Москва, от 50000 seva Работа 0 08.03.2009 11:01
setTimeout Воитель Общие вопросы Javascript 5 23.01.2009 10:36
поставьте пожалуйста раздел для ExtJS scuter Сайт Javascript.ru 3 01.10.2008 16:22