Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 18.08.2008, 17:35
Интересующийся
Отправить личное сообщение для Levin Посмотреть профиль Найти все сообщения от Levin
 
Регистрация: 06.08.2008
Сообщений: 20

У меня по непонятной причине setTimeout вообще никаких движений не производит, пробовал уже просто в функцию его вставить, ноль реакции
lis[i].onmouseout=function() {
			setTimeout("alert('gbhh')",3000);
			this.className=this.className.replace(new RegExp(" iehover\\b"), "");
Ответить с цитированием
  #22 (permalink)  
Старый 18.08.2008, 17:48
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Levin,
У вас ошибка где-то в другом месте, потому что вызов:
setTimeout("alert('gbhh')",3000);

Работает.
Ответить с цитированием
  #23 (permalink)  
Старый 18.08.2008, 17:52
Интересующийся
Отправить личное сообщение для Levin Посмотреть профиль Найти все сообщения от Levin
 
Регистрация: 06.08.2008
Сообщений: 20

Упс, извеняюсь, он в Firefox не работает почему то, в IE работает. Но от этого не легче. Мне надо вставить, насколько я понимаю, setTimeout в строку
this.className=this.className.replace(new RegExp(" iehover\\b"), "");

я прав?
Ответить с цитированием
  #24 (permalink)  
Старый 18.08.2008, 18:33
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Сообщение от Levin Посмотреть сообщение
У меня по непонятной причине setTimeout вообще никаких движений не производит, пробовал уже просто в функцию его вставить, ноль реакции
lis[i].onmouseout=function() {
			setTimeout("alert('gbhh')",3000);
			this.className=this.className.replace(new RegExp(" iehover\\b"), "");
lis[i].onmouseout=function() {
		setTimeout("alert('gbhh')",3000);
		this.className=this.className.replace(/ iehover\b/, "");
}


Должно работать!
Ответить с цитированием
  #25 (permalink)  
Старый 18.08.2008, 19:08
Интересующийся
Отправить личное сообщение для Levin Посмотреть профиль Найти все сообщения от Levin
 
Регистрация: 06.08.2008
Сообщений: 20

To ZoNT: поздравляю с новой ученой степенью :-)
setTimeout работает (правда в Firefox не хочет, но это не важно пока).

Сообщение от ZoNT Посмотреть сообщение
вешаешь закрытие (смену класса) на таймаут и всё (смотри setTimeout)
Смена класса производится в строке
this.className=this.className.replace(new RegExp(" iehover\\b"), "");

, и setTimeout неодходимо внедрить сюда. Верно?
Ответить с цитированием
  #26 (permalink)  
Старый 18.08.2008, 19:19
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Levin,
Вам тут нужно будет применить хитрость, для передачи элемента в нужную область видимости:
lis[i].onmouseout = function() {
        setTimeout(function(element) {
            return function() {
                element.className=element.className.replace(/ iehover\b/, "");
            }
        }(this),3000);
}
Ответить с цитированием
  #27 (permalink)  
Старый 18.08.2008, 20:33
Интересующийся
Отправить личное сообщение для Levin Посмотреть профиль Найти все сообщения от Levin
 
Регистрация: 06.08.2008
Сообщений: 20

Ух, работает!!!
Спасибо большое, при 0,15 сек. вариант очень даже приемлемый!!!
Хитро, можно коментарии оставить, а то я немного запутался. Понять все таки хочется.
Ответить с цитированием
  #28 (permalink)  
Старый 18.08.2008, 23:12
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Levin,
// Обворачиваем функцию в локальное замыкание:
function(element) {
    // Возвращаем функцию, которая использует element
    // доступный в локальной области видимости:
    return function() {
        element.className=element.className.replace(/ iehover\b/, "");
    }
// Запускаем эту функцию с параметром this - текущий элемент
// теперь в setTimeout передана функция, которая вернулась
// по return
}(this);
Ответить с цитированием
  #29 (permalink)  
Старый 18.08.2008, 23:16
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Андрей Параничев, перемудрили что-то
lis[i].onmouseout = function() {
  var self = this;
  setTimeout(function() {
    self.className = self.className.replace(/ iehover\b/, "");
  }, 3000);
}
Ответить с цитированием
  #30 (permalink)  
Старый 19.08.2008, 00:14
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Kolyaj,
Не подумал, виноват
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двухуровневое меню Harouth Общие вопросы Javascript 5 16.12.2008 16:12
Проблемы с меню на JS SeeD Общие вопросы Javascript 5 21.11.2008 19:44
помогите с меню Ribt Общие вопросы Javascript 0 20.09.2008 08:11
Выпадающее меню на css и javascript Jackky Общие вопросы Javascript 3 13.09.2008 18:30
Помогите сделать простое меню debugger Элементы интерфейса 1 09.09.2008 23:14