Обработчик через свойство (вопрос)
Есть функция:
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); } } } - не арбайтен... Неужели опять что-то проглядел? |
как минимум, неправильно используете обработчик события загрузки страницы :
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; } |
light is not defined....
но вопрос ещё один, смогу ли я в таком виде поставить на этот элемент ещё один обработчик? |
Отлично, работает)
Только я поставил document.getElementsByTagName('a')[1].addEventListener( "mouseover", light, false); вместо document.getElementsByTagName('a')[1].onmouseover = light; Так правильнее? |
Цитата:
Цитата:
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
Всё заработало. Правда, код не до конца понятен, но тем лучше, получше поразбираюсь в регулярных выражениях. |
их там нет, там сплошной DOM.
|
melky,
На всякий случай Особенности attachEvent Цитата:
|
Цитата:
три часа ночи :) |
Часовой пояс GMT +3, время: 06:52. |