Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2012, 00:24
Аспирант
Отправить личное сообщение для alexandr_v-vich Посмотреть профиль Найти все сообщения от alexandr_v-vich
 
Регистрация: 30.01.2012
Сообщений: 78

Обработчик через свойство (вопрос)
Есть функция:
var i=0;
function light() {
		if (i<4) {
			document.getElementsByTagName('a')[1].className += " redtext" + i;
			i += 1;
			t = setTimeout("light()", 50);
		}

Прибавляет классы стиля по порядку после "onmouseover". Работает на ура.

Решил вынести обработчик из html в js, как понял через свойство. Но элемент будет искаться и функция будет запускаться только после "window.onload" (или, если js после html - что не вариант).

Дошёл до этого:
var i=0;
if (window.onload) {
	document.getElementsByTagName('a')[1].onmouseover = function light() {
		if (i<4) {
			document.getElementsByTagName('a')[1].className += " redtext" + i;
			i += 1;
			t = setTimeout("light()", 50);
		}
	}
}

- не арбайтен...
Неужели опять что-то проглядел?
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2012, 00:28
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

как минимум, неправильно используете обработчик события загрузки страницы :
window.onload = function(){
     var i = 0,
          light = function() {
               if (i<4) {
                    document.getElementsByTagName('a')[1].className += " redtext" + i;
                    i += 1;
                    t = setTimeout(light, 50);
               }
          };
     document.getElementsByTagName('a')[1].onmouseover = light;
}
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2012, 00:33
Аспирант
Отправить личное сообщение для alexandr_v-vich Посмотреть профиль Найти все сообщения от alexandr_v-vich
 
Регистрация: 30.01.2012
Сообщений: 78

light is not defined....

но вопрос ещё один, смогу ли я в таком виде поставить на этот элемент ещё один обработчик?
Ответить с цитированием
  #4 (permalink)  
Старый 01.02.2012, 00:38
Аспирант
Отправить личное сообщение для alexandr_v-vich Посмотреть профиль Найти все сообщения от alexandr_v-vich
 
Регистрация: 30.01.2012
Сообщений: 78

Отлично, работает)

Только я поставил
document.getElementsByTagName('a')[1].addEventListener( "mouseover", light, false);

вместо
document.getElementsByTagName('a')[1].onmouseover = light;

Так правильнее?
Ответить с цитированием
  #5 (permalink)  
Старый 01.02.2012, 00:42
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от alexandr_v-vich Посмотреть сообщение
light is not defined....
вот пример.

Сообщение от alexandr_v-vich Посмотреть сообщение
но вопрос ещё один, смогу ли я в таком виде поставить на этот элемент ещё один обработчик?
нет, для этого вам необходимо использовать другой способ назначения обработчика, так как значением свойства on%событие% может быть только одна функция, а не две и т.д (в данный момент времени) :

window.onload = function(){
     var i = 0,
          ie = '\v'=='v',
          el = document.getElementsByTagName('a')[1],
          light = function() {
               if (i<4) {
                    document.getElementsByTagName('a')[1].className += " redtext" + i;
                    i += 1;
                    t = setTimeout(light, 50);
               }
          };
     ie ? el.attachEvent('onmouseover', light):el.addEventListener('mouseover', light, false);
}

Последний раз редактировалось melky, 01.02.2012 в 10:15.
Ответить с цитированием
  #6 (permalink)  
Старый 01.02.2012, 00:57
Аспирант
Отправить личное сообщение для alexandr_v-vich Посмотреть профиль Найти все сообщения от alexandr_v-vich
 
Регистрация: 30.01.2012
Сообщений: 78

Спасибо, melky
Всё заработало.
Правда, код не до конца понятен, но тем лучше, получше поразбираюсь в регулярных выражениях.
Ответить с цитированием
  #7 (permalink)  
Старый 01.02.2012, 00:58
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

их там нет, там сплошной DOM.
Ответить с цитированием
  #8 (permalink)  
Старый 01.02.2012, 01:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 32,195

melky,
На всякий случай Особенности attachEvent
Цитата:
Обработчик ставится как:

element.attachEvent( "on"+имя_события, обработчик)
Ответить с цитированием
  #9 (permalink)  
Старый 01.02.2012, 10:15
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от рони Посмотреть сообщение
melky,
На всякий случай Особенности attachEvent
да...

три часа ночи
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по JavaScript и проигрыванию звука через FLASH Opusel Events/DOM/Window 0 30.11.2011 16:18
повешен ли обработчик pharrell Events/DOM/Window 1 18.07.2011 00:35
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 13:50
отправка файла через обработчик события submit starrich AJAX и COMET 2 13.08.2008 21:29
Вопрос к гуру. Title через js. Не выводит title из тега <TR> shkur Элементы интерфейса 24 19.06.2008 08:03