Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2011, 00:01   #11
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
Код:
DivOnMouseOut()
{
function func(myParam) {
  alert(myParam);
}

//... выполняем действия для DivOnMouseOut
clearInterval(this.timer); //останавливаем, если работает
this.timer=setInterval(func(param), 1000); //запускаем
}
А вы проверяли?????? Не будет работать .... утверждаю на 90%, потому что когда-то пробовал, вроде бы обходил это использованием глобальной переменной. Откуда у вас в func возьмется param ?? Это ж вы передаете callback функцию, которую setInterval должен будет вызвать с параметром. НО ! setInterval не посылает в callback никаких параметров.
По поводу IE посмотрите здесь
Cronos20 вне форума Ответить с цитированием
Старый 10.07.2011, 01:36   #12
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Оно не сработает. Просто будет вызов func(param) и всё. Тока щас проверил.
Лан. Перефразирую.Нужно написать так:
Код:
DivOnMouseOver()
{
clearInterval(this.timer);
this.timer=setInterval(function ()
{
// это замыкание, поэтому сохраняет контекст вызова в т.ч. и this
    func(this); // вызов той функции
}, 1000);
}

DivOnMouseOut()
{
clearInterval(this.timer);
this.timer=setInterval(function ()
{
    func(this); // аналогично
}, 1000);
}


// внезапно
function func(thisObj)
{
// тут thisObj - это тот this, который так нужен был, просто переименовал, чтобы непоняток не было
// тут кодЭ
}
ЗЫ Naive, классная подпись.

Последний раз редактировалось Carbon; 10.07.2011 в 01:45.
Carbon вне форума Ответить с цитированием
Старый 10.07.2011, 23:51   #13
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию

Если честно, то пока не запускал\не пробовал.. Отпишусь как только, так сразу.. Я прочитал статейку http://javascript.ru/basic/closure и у меня возник вопрос в этом месте: http://javascript.ru/basic/closure#o...hennoy-funkcii. В пример можно взять мой код. Просмотрим последовательность действий:
1. происходит событие
2. вызывается функция DivOnMouseOver
3. создается [[scope]]
4. выполняются какие то действия
5. функция завершила выполнение, причем [[scope]] остается, т.к. данные из нее понадобятся

вот эти действия выполняются при наступлении события. проходит еще одно событие, 3ее, 5ое, 10ое, 100ое и т.д. А что делается с объектами [[scope]]? Я имею ввиду, то что, если произойдет 100 событий, то и создастся 100 [[scope]]? И они удалятся когда нибудь или останутся "висеть до посинения"? И их можно удалить, если они висят??
SkrudjMakdak вне форума Ответить с цитированием
Старый 11.07.2011, 14:44   #14
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию

Carbon, в вашем примере замыкание не происходит, наверное нет переменной куда бы сохранилась бы та самая this. НО если туда дописать 1ну строчку var ths=this, то все работает на ура.

Код:
DivOnMouseOver()
{
clearInterval(this.timer);
var ths=this;
this.timer=setInterval(function(){func(ths);}, 1000);
}
SkrudjMakdak вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметра в поток Sanprof Общие вопросы Delphi 10 08.07.2015 14:11
Передача параметра функции FredPerry Общие вопросы C/C++ 2 29.12.2010 06:46
передача параметра в конструктор пауэрлифтинг Общие вопросы Delphi 2 27.04.2010 21:27
передача параметра по ссылке veter_s_morya PHP 7 18.10.2009 16:43
Передача параметра в поток joker Win Api 10 22.12.2007 12:53