Событие на кнопку javascript. Последовательность выполнения скриптов. Объектная модель Java Script

Да, библиотека Ext Core представляет весьма мощные средства для создания новых элементов Web-страницы. К сожалению, удалить ненужные элементы можно только методомremove объектаElement . Он немедленно удаляет данный элемент Webстраницы со всем его содержимым, не принимает параметров и не возвращает значения.

Ext.get("cmain").remove();

Здесь мы удаляем контейнер cmain со всем его содержимым.

Обработка событий

Теперь самое время рассмотреть один ключевой вопрос Web-программирования: события, их возникновение и обработка.

Понятие события и его обработки

Рассматривая примеры Web-сценариев, мы исходили из предположения, что они выполняются при загрузке Web-страницы. Как мы уже знаем изглавы 14 , Webсценарий исполняется в том месте HTML-кода Web-страницы, в котором присутствует создающий его тег . При этом неважно, является Web-сценарий внутренним (помещенном прямо в HTML-код) или внешним (хранящимся в отдельном файле Web-сценария).

Однако существует большая группа Web-сценариев, которые выполняются при возникновении определенного события, к которому эти Web-сценарии были привязаны. О них-то и пойдет сейчас разговор.

Событием в терминологии Web-программирования называется некое условие, которое возникает в Web-обозревателе в ответ на действия посетителя или в процессе работы самого Web-обозревателя. Так, щелчок левой кнопкой мыши на элементе Web-страницы приводит к возникновению события "щелчок левой кнопкой мыши", а перемещение курсора мыши над элементом Web-страницы - "перемещение курсора мыши". Нажатие клавиши на клавиатуре приводит к возникновению события "нажатие клавиши", а ошибка в загрузке изображения - "ошибка загрузки".

Существует много разнообразных событий, как говорится, на все случаи жизни. Ежесекундно их возникает десятки, если не сотни.

Так вот, мы можем заставить Web-сценарий выполняться в ответ на возникновение определенного события в определенном элементе Web-страницы. Для этого нужный Web-сценарий особым образом привязывается к данному элементу Webстраницы и событию. Такие Web-сценарии называютсяобработчиками событий .

Что может делать обработчик события? Да что угодно! При наведении курсора мыши он может привязывать к элементу Web-страницы другой стилевой класс, меняя его представление. (Именно такой обработчик события мы создали вглаве 14 .) При щелчке левой кнопкой мыши на элементе Web-страницы - разворачивать или сворачивать блочный контейнер, открывая или скрывая его содержимое. А при из-

менении размеров окна Web-обозревателя - менять размеры блочных контейнеров, чтобы полностью занять ими клиентскую область окна.

Теперь уясним следующие моменты, связанные с обработчиками событий.

 Обработчик события оформляется в виде функции, которая принимает два параметра. Подробнее об этом мы поговорим потом.

 Обработчик события привязывается к конкретному элементу Web-страницы,

в котором возникают события, требующие обработки. Так, если нужно обработать событие "щелчок левой кнопкой мыши" в каком-либо абзаце, обработчик привязывается к данному абзацу.

 Обработчик события привязывается к конкретному событию. Так, если мы привязали обработчик к событию "щелчок левой кнопкой мыши", он будет выполняться только при возникновении именно этого события. Другие события, скажем, "двойной щелчок левой кнопкой мыши", он обрабатывать не будет.

 Обработчик события выполняется только при возникновении заданного события

в элементе Web-страницы, к которому он привязан. Во время загрузки Webстраницы он не выполняется.

 Мы можем привязать один и тот же обработчик сразу к нескольким элементам Web-страницы и нескольким событиям. Так, один и тот же обработчик может обрабатывать событие "щелчок левой кнопкой мыши" в абзаце и в гиперссылке. Кстати, так часто и делают.

События объекта Element

Самые полезные для нас на данный момент события, поддерживаемые объектом Element библиотеки Ext Core, представлены в табл. 15.1. Их довольно много, и некоторые из них поддерживаются только определенными элементами Webстраницы.

Таблица 15.1. События объектаElement

Описание

Возникает при прерывании загрузки изображения, аудиоили видеофайла

посетителем. Не всплывает. Действие по умолчанию - отмена загрузки,

отменить его невозможно

Возникает при щелчке левой кнопкой мыши на элементе Web-страницы

после событий mousedown иmouseup . Всплывает. Действие по умолчанию

зависит от конкретного элемента, может быть отменено

Возникает при двойном щелчке левой кнопкой мыши на элементе Web-

страницы. Всплывает. Действие по умолчанию зависит от конкретного эле-

мента, может быть отменено

Возникает при ошибке при загрузке изображения, аудиоили видеофайла.

Не всплывает. Действие по умолчанию - вывод сообщения об ошибке,

отменить его невозможно

Часть III. Поведение Web-страниц. Web-сценарии

Таблица 15.1 (окончание)

Описание

невозможно

Возникает при нажатии любой клавиши. Всплывает. Действие по умолча-

нию - передача нажатой клавиши элементу, имеющему фокус ввода, мо-

жет быть отменено

Возникает при нажатии любой алфавитно-цифровой клавиши между собы-

тиями keydown иkeyup . Если клавиша удерживается нажатой, возникает

постоянно, пока клавиша не будет отпущена. Всплывает. Действие по умол-

чанию - передача нажатой клавиши элементу, имеющему фокус ввода,

может быть отменено

Возникает при отпускании нажатой ранее клавиши. Всплывает. Действие по

умолчанию - передача нажатой клавиши элементу, имеющему фокус вво-

да, может быть отменено

Возникает после успешной загрузки изображения, аудиоили видеофайла.

Не всплы

Возникает при нажатии левой кнопки мыши. Всплывает. Действие по умол-

чанию отсутствует

Возникает при перемещении курсора мыши над элементом Web-страницы.

Всплывает. Действие по умолчанию отсутствует

Возникает, когда курсор мыши уводится с элемента Web-страницы. Всплы-

вает. Действие по умолчанию отсутствует

Возникает, когда курсор мыши наводится на элемент Web-страницы. Всплы-

вает. Действие по умолчанию отсутствует

Возникает при отпускании нажатой ранее левой кнопки мыши. Всплывает.

Действие по умолчанию отсутствует

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

Привязка и удаление обработчиков событий

Метод on объектаElement выполняет привязку указанной функции к указанному событию данного элемента Web-страницы в качестве обработчика:

.on(, )

Первым параметром методу передается строка с названием события, к которому выполняется привязка обработчика. Названия событий приведены в первом столбце табл. 15.1.

Второй параметр - функция, которая станет обработчиком события. Эта функция должна принимать следующие параметры:

 первый - экземпляр объекта EventObject , представляющий сведения о событии и позволяющий им управлять (мы рассмотрим этот объект потом);

 второй - экземпляр объекта HTMLElement , представляющий элемент Webстраницы, в котором изначально возникло данное событие.

Кроме того, в функцию-обработчик неявно передается еще один параметр - экземпляр объектаHTMLElement , представляющий элемент Web-страницы, в котором в данный момент обрабатывается данное событие, - тот самый элемент, к которому привязан этот обработчик. Событие могло возникнуть в нем изначально, а могло всплыть из дочернего элемента; подробнее об этом будет рассказано в следующем разделе. Данный параметр доступен в теле функции-обработчика через перемен-

ную this .

Ext.get("navbar").on("mouseover", function(e, t) {

Здесь мы привязываем к списку navbar обработчик событияmouseover . Первый параметр методаon определяет название события, которое мы хотим обрабатывать. Второй параметр этого метода содержит объявление функции-обработчика.

В теле функции-обработчика мы обращаемся к переменнойthis , чтобы получить экземпляр объектаHTMLElement , представляющий элемент Web-страницы, чье событие мы обрабатываем. Чтобы получить из него соответствующий экземпляр объектаElement , мы используем методget . После чего привязываем к полученному экземпляру объектаElement стилевой классhovered вызовом методаaddClass .

Отметим, что наша функция-обработчик принимает два параметра, которые, впрочем, нигде в ее теле не используются. Так что мы можем вообще не указывать их в объявлении функции-обработчика:

Ext.get("navbar").on("mouseover", function() {

Ext.get(this).addClass("hovered");

Мы можем оформить обработчик события в виде функции, имеющей имя, а потом указать это имя в качестве второго параметра метода on :

function navbarMouseOver() { Ext.get(this).addClass("hovered");

Ext.get("navbar").on("mouseover", navbarMouseOver);

Это полезно, если мы хотим привязать один обработчик сразу к нескольким событиям одного или нескольких элементов Web-страницы.

Метод removeAllListeners объектаElement удаляет все привязанные к данному элементу Web-страницы обработчики событий. Он не принимает параметров.

Объектная модель Java Script

Язык Java Script является объектно-ориентированным. Базовый элемент языка - объект, представляющий собой документ HTML или его элемент, окно браузера или его управляющий элемент. Объект имеет:

· свойства, описывающие его состояния. Свойствами объекта могут быть другие объекты или просто числовые значения. Если значение свойства не может быть изменено, такие свойства при описании объектов помечаются как Readonly ;

· методы - функции, позволяющие выполнять какие-либо действия над объектом;

· обработчики событий, которые позволяют выполнять определенные действия, когда происходит событие, т.е. меняется состояние объекта.

Обработчик событий выполняет программу JavaScript, когда происходит соответствующее событие.

Обработчики событий определяются атрибутом с соответствующим именем в HTML-теге, который создает данный объект JavaScript. Значением может быть любое число операторов JavaScript, разделенных точкой с запятой.

Пример определения обработчика:

Обработчики событий могут вызываться явно, например - button.onClick().

С помощью обработчиков можно, например, выдавать сообщения в ответ на действия пользователя, проверять данные, введенные в форме перед ее отправкой и т.д. Можно отменить или изменить стандартное действие, выполняемое при определенном событии. Для отмены обработчик должен вернуть значение false. Например, при нажатии на ссылку не грузится новый документ, а выдается сообщение:

Определены следующие события и обработчики:

onBlur - cобытие blur происходит, когда окно навигатора или поля формы select, text или textarea теряют фокус.

onFocus - событие focus происходит, когда окно навигатора или поле получает фокус ввода с клавиатуры или щелчком "мыши". Выбор результатов внутри поля связан с событием select, но не с событием focus.

Объекты: window, select, text, textarea.

onChange - событие change происходит, когда поля формы select, text или textarea теряют фокус и их значения были изменены.

Обработчик событий onChange может использоваться для проверки данных после их изменения пользователем.

Объекты: select, text, textarea.

onSelect - событие select происходит, когда пользователь выбирает пункт меню или списка select или некоторый текст внутри поля text или textarea.

Объекты: text, textarea, select.

onClick - событие click происходит при щелчке "мышью" на объекте формы или элементе документа.



Объекты: button, checkbox, radio, link, reset, submit.

onMouseOver - событие mouseOver происходит каждый раз, когда курсор "мыши" попадает на объект.

onMouseOut - событие mouseOotr происходит каждый раз, когда курсор "мыши" покидает границы объекта.

Объекты: link.

onSubmit - событие submit происходит, когда пользователь отправляет форму на Web-сервер.

Вы можете использовать обработчик событий onSubmit для остановки передачи данных формы; для этого используется выражение return, которое возвращает false в обработчик событий. Любое другое возвращенное значение отправляет форму.

onReset - событие reset происходит, когда пользователь сбрасывает значения всех элементов формы в установленные по умолчанию.

В NN4.0 и выше вы можете использовать обработчик событий onReset для отмены сброса данных формы; для этого используется выражение return, которое возвращает false в обработчик событий.

Объекты: form.

onLoad - событие load происходит, когда браузер завершает загрузку изображения, окна или всех фреймов внутри тега .

Объекты: window, image.

onUnload - событие unload происходит, когда вы выходите из документа.

Обработчики событий onLoad и onUnload описываются внутри тегов или , например, .

События onLoad и onUnload, описанные внутри фрейма в теге , происходят перед аналогичными событиями, описанными в теге .

Объекты: window.

onError - событие error происходит, когда при загрузке документа или изображения произошла ошибка.

Объекты: window, image.

onAbort - событие abort происходит, когда загрузка изображения прервана пользователем.

Объекты: image.

Чтобы отключить стандартную обработку события, обработчик должен возвратить логическое значение FALSE (return false).

Исключение : для отмены стандартной обработки событий onMouseOver, onMouseOut, onError обработчик должен возвратить логическое значение TRUE (return true).

Одной из самых важных возможностей языка JavaScript, которая, пожалуй, является основной в этом языке, это возможность обрабатывать какие-то события . Такая возможность является особенностью для JavaScript по сравнению с другими языками из web программирования, потому что только этому языку в силе сделать подобное.

Что такое событие и обработчики событий

Событие - это некое действие, которое может производить либо пользователь, либо другие объекты на странице.

Самым ярким примером события это клик пользователя по какому-то объекту(click ), будь то это кнопка, ссылка или любой другой элемент. Другой пример события, это наведение мыши над каким-то объектом(mouseover ), скажем над изображением. Также событием является полное загрузка страницы(load ). В общем все действия, которые происходят на сайте являются событиями.

Так вот, мы можем захватить любое событие, которое производится на странице и обрабатывать её с помощью соответствующего обработчика. Например, при наведении мыши на какой-то блок div, мы можем вывести некое сообщение, допустим "Вы находитесь в текстовой области". Или, при клике по кнопке скрыть какой-то блок со страницы. В общем, много чего можно сделать пре обработки какого-то события.

И для того чтобы обрабатывать какое-то событие, необходимо использовать специальный обработчик для данного события. Каждое событие имеет свой обработчик, например, у события клик(click ) есть обработчик onclick . У события наведения мыши над объектом(mouseover ) есть обработчик onmouseover . И у события полной загрузки страницы(load ) есть обработчик onload .

То есть как вы поняли название обработчика , формируется из префикса "on" + название события.

Полный список событий и обработчиков можно найти в справочнике, в этой статье мы рассмотрим лишь те, которые чаще всего используется.

Обработчик события вызывается в качестве атрибута, в самом теге HTML элемента. В значение обработчика можно написать сразу код JavaScript, но лучше вызывать какую-то функцию, которая сделает необходимые действия. Функцию необходимо описать внутри тега script, который может находится как внутри блока head, так и в конце тега body. В качестве параметра для этой функции передаётся слово this , то есть текущий объект.

Теперь напишем простой пример. При наведении мыши над блоком с текстом, выведем с помощью метода alert, сообщение о том что пользователь находится внутри текстовой области.

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry"s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

Div{ padding-left: 50px; width: 200px; border: 1px solid #000; }

JavaScript код:

Function blockOver(block){ alert("Вы находитесь в текстовой области "); }

Сохраняем документ, открываем его в браузере, наводим курсор мыши над текстом и видим результат обработки данного события:


Как получить значение атрибута в javascript ?

С помощью параметра функций (this), можно получить значение какого-то атрибута текущего объекта , например, узнать его id.

Для примера, создадим кнопку и зададим ей id со значением "justButton". Когда кликнем на данную кнопку, то выведем такое сообщение: "Вы кликнули по кнопке, с идентификатором значение_id". Здесь необходимо уже использовать обработчик onclick .

JavaScript код:

Function clickOnButton(button){ alert("Вы кликнули по кнопке, с идентификатором: " + button.id); }

Сохраняем документ, открываем его в браузере и кликаем по кнопке.


Таким же образом можно вывести имя кнопки(button.name ) или её значение(button.value )

Получаем значение ширины и высоты элемента

Ещё можно узнать значения CSS свойства элемента , например, ширину и высоту. Для получения ширины используются свойства clientWidth и offsetWidth , а для высоты clientHeight и offsetHeight . Для примера, выведем значения ширины и высоты кнопки, по которой кликнули.

Теперь содержимое функции clickOnButton будет такой:

Function clickOnButton(button){ //alert("Вы кликнули по кнопке, с идентификатором: " + button.id); var width = button.clientWidth || button.offsetWidth; var height = button.clientHeight || button.offsetHeight; alert("Ширина кнопки: " + width + "\nВысота кнопки: " + height); }

Результат данного примера:


Напоминаю, что ширина элемента считается вместе со значением padding, поэтому она и равна 111px [ 99px(width) + 6px(padding-left) + 6px(padding-right) ].

В случае если для обработки какого-то события, не нужно писать много кода, то можно написать данный код прямо в значение обработчика . То есть вместо вызова функции пишем сразу нужный код.

Например, при загрузке страницы можно вывести сообщение о том, что "страница загружается". Для этого необходимо использовать событие load и её обработчик onload . Данный обработчик напишем в открывающем теге body.

Такой способ можно использовать только в случае если для обработки события нужно только одна короткая строчка кода. В противном случае, если код обработки состоит из одной длинной строки или много строк, то нужно использовать функцию.

И в конец данной статьи разберём простой пример обработки формы. Обработка формы на JavaScript, во-первых, уменьшает загрузку на сервер и во-вторых придаёт дополнительный плюс к юзабилити сайта.

Форма состоится из одного поля для логина, и кнопки отправить. При отправке формы, будем проверять длину логина. Его длина должна быть больше трёх символов.

Начнём, мы с HTML структуры данной формы.

Теперь, тегу формы добавим в качестве атрибута обработчик onsubmit , события submit . Следующим образом:

Событие submit срабатывает при отправке формы. Оператора return мы написали для того чтобы запретить отправку формы, в случае обнаружения ошибки в вводе данных. Если функция вернёт значение false, то значение обработчика onsubmit будет «return false», это значит, что форма не отправиться на сервер. В противном случае, если форма вернёт true, то значение обработчика будет «return true» и форма отправится без проблем.

Иногда бывает необходимо чтобы полностью запретить отправку формы, в таком случае значение обработчика onsubmit будет таким:

Onsubmit = "checkForm(this); return false;"

Как Вы наверняка уже догадались, checkForm это название функции, которая вызовется, когда сработает событие submit. Вы можете назвать её как хотите, следуя правилам наименования функции.

И так, вернёмся к нашему примеру. Теперь нам необходимо описать функцию checkForm. В ней будет такое условие: если длина логина меньше трёх символов, то мы возвращаем false и форма не отправится, в противном случае, если данные были введены правильно, то, мы отправляем форму на сервер.

Function checkForm(form){ //Получаем значение поля формы, у которой name равен login var login = form.login.value; //Проверяем, если длина логина меньше трёх символов то выводим сообщение об ошибке и отменяем отправку формы. if(login.length > 3){ alert("Длина логина должна быть больше трёх символов"); return false; }else{ return true; } }

Сохраняем документ, открываем его в браузере и тестируем.


Таким вот образом можно проверить форму на языке JavaScript и отменить её отправку в случае ошибки.

Ну и на этом всё дорогие читатели. Подведём итоги.
События используются очень часто, поэтому Вы должны уметь работать с ними на все 100.

В этой статье Вы узнали, что такое событие и обработчик события . Вы узнали, как получить значения атрибутов элементов и как узнать ширину и высоту элемента . Также Вы узнали, как сделать проверку формы.

Задачи
  • Создайте простой калькулятор сложения цифр.
    • Создайте форму с двумя числовыми полями(type="number") для ввода чисел и кнопку с надписью "Сложить"
    • При нажатии на кнопку отправить, вызовите функцию обработки данного события.
    • Внутри функции получите значения полей и методом alert, выведите результат сложения введённых чисел.
    • Сделайте так чтобы форма не отправлялось после нажатия по кнопке.
  • Рассмотрим наиболее стандартные и часто используемые javaScript события:

    Обработчик
    события

    Поддерживающие HTML- элементы и объекты

    Описание

    Получение элементом фокуса

    a, area, button, input,
    label, select, textarea

    Потеря текущим элементом фокуса. Возникает при
    щелчке мышью вне элемента либо нажатии клавиши табуляции

    Input, select, textarea

    Изменение значений элементов формы. Возникает после потерей элементом фокуса, т.е. после события blur

    Практически все

    Одинарный щелчок (нажата и отпущена кнопка мыши)

    a, area, button, input, label, select, textarea

    Практически все

    Нажата кнопка мыши в пределах текущего элемента

    Практически
    все

    Курсор мыши выведен за пределы
    текущего элемента

    Практически все

    Курсор мыши наведен на текущий элемент

    Практически все

    Отпущена кнопка мыши в пределах текущего элемента

    Перемещение окна

    Изменение размеров окна

    Выделение текста в текущем элементе

    Отправка данных формы

    Попытка закрытия окна браузера и выгрузки документа

    Событие onLoad. Свойства высоты и ширины объекта в javaScript

    Для выполнения следующего примера нам понадобится новое понятие — событие.

    В нашем случае событие — это реакция программы на действие пользователя (щелчок мышью по кнопке, уменьшение мышкой окна браузера, ввод текста с клавиатуры и т.д.). С помощью программы у нас есть возможность отреагировать на любые действия пользователя.

    Рассмотрим одно из самых распространенных событий — onload — которое происходит при загрузке документа (когда пользователь своими действиями вызвал загрузку веб-страницы).

    Рассмотрим пример использования события javascript onload для изменения ширины и высоты элемента.

    Пример: Добавить на страницу изображение и при помощи javascript при наступлении события загрузки страницы сделать ширину изображения соответствующей ширине окна браузера

    function resizeImg() { var myImg= document.getElementById ("img1" ) ; myImg.style .width = document.body .clientWidth ; } ...

    function resizeImg(){ var myImg=document.getElementById("img1"); myImg.style.width=document.body.clientWidth; } ...

    В примере основные действия происходят в функции resizeImg() :

  • переменная myImg ассоциирована с тегом img — картинкой, свойство которой width — ширина — меняется в самой функции.
  • Вызов функции происходит по загрузке страницы в событии onload тела документа (тело — body — главный элемент, поэтому загрузка страницы — это событие, относящееся к телу).
  • Задание Js8_4. Разместите в html-коде несколько изображений (тег img). Используя метод измените:
    — размер (свойства width и height) всех изображений страницы
    — размер границы (свойство border) всех изображений.
    Дополните код:

    var allImg=document...; // получаем массив изображений for (var i=0; i < allImg.length; i++){ allImg[i].....; // меняем свойство width ...; // меняем свойство height ...; // меняем border }

    Событие onclick javaScript и три способа обработки событий

    Событие onClick происходит во время одинарного щелчка кнопкой мыши . Обработать событие, т.е. отреагировать на него посредством скрипта, можно тремя способами. Рассмотрим их:

    Пример: По щелчку на кнопке вывести диалоговое окно с сообщением «Ура!»

  • Через свойство объекта с использованием пользовательской функции:
  • Скрипт:

    В данном примере в html-коде мы видим кнопку. У кнопки присутствует атрибут onclick («по щелчку» ), в значении которого стоит вызов функции с названием message() . Это пользовательская функция, описанная выше в скрипте. В самой функции выводится диалоговое окно, что и задано согласно заданию.

    Скрипт при такой обработке события обычно находится в области head документа


  • Через атрибут тега:
  • Это упрощенный вариант обработки события, он подходит только для небольшого кода, когда необходимо выполнить один-два оператора. Иначе код будет плохочитаемым.
    В качестве атрибута кнопки указывается onclick («по щелчку» ), а в качестве значения пишется скрипт из операторов с указанием на каком языке он написан (javascript:). В нашем случае оператор для вывода модального окна со словом «Ура!»

  • Через регистрацию функции-обработчика в качестве свойства элемента:
  • html-код:

    Скрипт:

    document.myForm .myButton .onclick = message; function message() { alert("Ура!" ) ; }

    document.myForm.myButton.onclick = message; function message() { alert("Ура!"); }

    В html-коде здесь присутствует кнопка с атрибутом id , который необходим для обращения к кнопке через скрипт.

    В скрипте, который обязательно находится ниже дерева элементов (можно перед закрытием тега body), находится обращение к кнопке (document.myForm.myButton), для которой назначается обработчик события onclick со значением ссылки на функцию . Обращение к кнопке может быть организовано через атрибут id (document.getElementById("myButton").onclick = message;)

    Скобки после названия функции message не ставятся. В данном случае это именно ссылка на функцию, иначе, при использовании скобок, функция была бы вызвана, а не назначена в качестве обработчика событий.

    Именно такой способ обработки событий максимально приближен к тому, который происходит, например, в ОС windows.

    Задание Js8_5. Выполните задание по инструкции:

  • Создайте веб-страницу и расположите на ней тег img с изображением грустного смайлика
  • Щелчок на изображении (onclick) вызывает заданный метод (пользовательская функция):
  • В скрипте опишите метод (функция sayHello()), который спрашивает, как зовут пользователя, а затем приветствует его по имени, и меняет изображение на улыбающийся смайлик (свойство src тега img):
  • Зеленый
    … seagreen
    … magenta
    … purple
    … navy
    … royalblue

    Задание Js8_7. Создание rollover-изображения

    — Добавьте в код тег img с изображением.
    — Введите обработчики событий onmouseover (по наведению) и onmouseout (при отведении). Сделайте это в виде функций.
    onmouseover процедуру загрузки в тег img другого изображения.
    — Присоедините к обработчику событий onmouseout процедуру загрузки другого изображения в тег img .

    Такое простое событие, как onclick в javascript, может быть вызвано несколькими способами и скрыает некоторые тонкости. Событие происходит при клике по элементу левой кнопкой мыши. Стоит заметить, что при клике происходит так же ещё два события, а именно нажатие на кнопку мыши и её отжатие.

    Все примеры будем рассматривать на теге «a» (ссылку). Пусть это не смущает, с другими тегами будет работать аналогичным образом.

    Самый простой способ повесить событие onclick, это прописать его непосредственно в html теге:

    Пример 1

    Код в действии:

    В примере при нажатии на ссылку появляется всплывающее окно с сообщением. Дополнительно к действию мы прописали «return false;». Это требуется чтобы предотвратить переход по ссылке после срабатывания события «onclick». В других элементах (где нет аттрибута href) это можно опустить.

    Рассмотренный вариант можно использовать если событие содержит мало кода. Иначе, следует обратить внимание на другие способы.

    Выносим код
    события onclick в javascript-функцию

    Следующий способ хорош тем, что мы отделяем javascript-код от html тегов. В теге прописываем название функции, а саму функцию выносим в отдельный блок:

    function ChangeColor(Element) { if (Element.style.color == "green") Element.style.color = "red"; else Element.style.color = "green"; return false; } Изменить цвет

    Код в действии:

    Но и здесь всё не идеально. Что делать, если событие требуется повесить на все ссылыки сайта, а их сотни? Кажется что это трудно, а на деле - меньше десяти строк кода. Задача решается с помощью селекторов. В примере опять будем производить действия с тегом «a», но ничего не мешает использовать вместо ссылки «img» или «div».

    Вешаем onclick на элемент из javascript-кода

    Рассмотим еще один способ, на мой взгляд, самый практичный и надежный. Хорош он тем, что событие можно повесить на множество элементов. Для этого требуется выбрать при помощи javascript-селекторов элементы, к которым требуется применить событие onclick.

    //дожидаемся полной загрузки страницы window.onload = function () { //получаем идентификатор элемента var a = document.getElementById("switch"); //вешаем на него событие a.onclick = function() { //производим какие-то действия if (this.innerHTML=="On") this.innerHTML = "Off"; else this.innerHTML = "On"; //предотвращаем переход по ссылке href return false; } } On

    Код в действии:

    Выбору элементов по селекторам можно посвятить отдельную тему, могу сказать только то, что согласно новой спецификации HTML5, их выбор стал прост и в javascript. Если Вы знакомы с jquery или CSS, то выбрать нужные элементы для Вас не составит труда. Например, так просто можно выбрать все элементы с классом «link» и повесить на них нужное действие:

    //выбираем нужные элементы var a = document.querySelectorAll(".link"); //перебираем все найденные элементы и вешаем на них события .forEach.call(a, function(el) { //вешаем событие el.click = function(e) { //производим действия } });

    Применяем jQuery

    Если в проекте используется библиотека jQuery, то можно ещё упростить код. Рассмотрим два самых распространенных способа:

    $(function(){ $(".link").click(function() { //действия }); });

    И ещё один вариант, который идентичен предыдущему.

    $(function(){ $(".link").on("click", function(){ //действия }); });

    С обработчиком «on()» лучше ознакомиться отдельно, так как он несет в себе много полезного функционала. Например, возможность указать через пробел несколько событий к которым будет применяться действие, делегировать события на дочерние элементы, а так же он полезен если необходимо повесить событие на динамически добавляемые элементы, которых изначально нет на странице.