18.08.2008, 17:35
|
Интересующийся
|
|
Регистрация: 06.08.2008
Сообщений: 20
|
|
У меня по непонятной причине setTimeout вообще никаких движений не производит, пробовал уже просто в функцию его вставить, ноль реакции
lis[i].onmouseout=function() {
setTimeout("alert('gbhh')",3000);
this.className=this.className.replace(new RegExp(" iehover\\b"), "");
|
|
18.08.2008, 17:48
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Levin,
У вас ошибка где-то в другом месте, потому что вызов:
setTimeout("alert('gbhh')",3000);
Работает.
|
|
18.08.2008, 17:52
|
Интересующийся
|
|
Регистрация: 06.08.2008
Сообщений: 20
|
|
Упс, извеняюсь, он в Firefox не работает почему то, в IE работает. Но от этого не легче. Мне надо вставить, насколько я понимаю, setTimeout в строку
this.className=this.className.replace(new RegExp(" iehover\\b"), "");
я прав?
|
|
18.08.2008, 18:33
|
Флудер
|
|
Регистрация: 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/, "");
}
Должно работать!
|
|
18.08.2008, 19:08
|
Интересующийся
|
|
Регистрация: 06.08.2008
Сообщений: 20
|
|
To ZoNT: поздравляю с новой ученой степенью :-)
setTimeout работает (правда в Firefox не хочет, но это не важно пока).
Сообщение от ZoNT
|
вешаешь закрытие (смену класса) на таймаут и всё (смотри setTimeout)
|
Смена класса производится в строке
this.className=this.className.replace(new RegExp(" iehover\\b"), "");
, и setTimeout неодходимо внедрить сюда. Верно?
|
|
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);
}
|
|
18.08.2008, 20:33
|
Интересующийся
|
|
Регистрация: 06.08.2008
Сообщений: 20
|
|
Ух, работает!!!
Спасибо большое, при 0,15 сек. вариант очень даже приемлемый!!!
Хитро, можно коментарии оставить, а то я немного запутался. Понять все таки хочется.
|
|
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);
|
|
18.08.2008, 23:16
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Андрей Параничев, перемудрили что-то
lis[i].onmouseout = function() {
var self = this;
setTimeout(function() {
self.className = self.className.replace(/ iehover\b/, "");
}, 3000);
}
|
|
19.08.2008, 00:14
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Kolyaj,
Не подумал, виноват
|
|
|
|