Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   можно ли на объект повесить два события одновременно? (https://javascript.ru/forum/misc/27921-mozhno-li-na-obekt-povesit-dva-sobytiya-odnovremenno.html)

andrew_F 29.04.2012 19:45

можно ли на объект повесить два события одновременно?
 
...например, при наведении мышкой на этот текст фон страницы поменяется:

<a href="http://www.mail.ru" onMouseOver="document.bgColor='#FFAACC';
return true">меняется фон страницы</a>

А можно повесить на этот же текст-ссылку ещё и событие onMouseOver??
Я пробовал, не получилось,срабатывает только "последняя" функция может синтаксис неверный а может быть так в принципе нельзя?:

<a href="http://mail.ru" onMouseOver="document.bgColor='#FFAACC' onMouseOut=document.bgColor='#00FF00'" onMouseOut="document.bgColor='#00FF00'"> меняется фон страницы</a>

Подскажите, как поступить в данном случае? Не хотелось бы создавать отдельный текст для наведения мышки, отдельно для щёлканья, отдельно для увода мышки с текста... Все события хотелось бы на одном объекте размещать

andrew_F 29.04.2012 20:05

С ума сойти как вы были правы!!!
оказывается ошибка была в синтаксисе, надо было так:

<a href="http://mail.ru" onMouseOver="document.bgColor='#FFAACC' " onMouseOut="document.bgColor='#00FF00' ">меняется фон страницы</a>

"Может ли Ланцелот мечом убить дракона?" - "Может"....
Но не Ланцелот
И не мечом
и не дракона
и не убить...

Mirror13 29.04.2012 20:11

Лучше не размещать код прямо в тегах - это очень, очень плохо. Так же как атрибут bgColor.

А ошибка вот тут:
<a onMouseOver="document.bgColor='#FFAACC' onMouseOut=document.bgColor='#00FF00'">...</a>

Это все, как получается, один атрибут. Соответственно, MouseOver не срабатывает из-за синтаксической ошибки, а единственно правильно описанный MouseOut (последний) - срабатывает.

andrew_F 29.04.2012 20:20

Лучше не размещать код прямо в тегах - это очень, очень плохо.

а как же тогда размещать посоветуете? Через id??
А сам скрипт, получается, надо писать в конце страницы, перед </body>, чтобы DOM сформировался?

Mirror13 29.04.2012 20:53

Если объемы большие, лучше писать в отдельных JS-файлах.

Сейчас часто используется jQuery, там проблема с формированием DOM решается просто: запуск кода по событию готовности документа делается так:
$(function() {
//Код, который запустится после того, как все прогрузилось
})


Без jQuery можно сделать примерно так (возможно, я ошибся в названии событий):
if (window.addEventListener)
    window.addEventListener('load', loadHandler);
else if (window.attachEvent)
    window.attachEvent('onload', loadHandler);
else
    window.onload = loadHandler; //Переопределит все остальные обработчики, добавленные так

function loadHandler() {
    alert('Страница загрузилась');
}

andrew_F 30.04.2012 14:51

Спасибо! Ваши ответы мне очень помогли


Часовой пояс GMT +3, время: 14:54.