Таймеры setTimeout() и setInterval().

Лабораторная работа №5. События и функции JavaScript

События.

Любое приложение выполняет те или иные действия, откликаясь на различные события. Для того, чтобы скрипт отреагировал на событие – нужно назначить хотя бы одну функцию-обработчик. Обычно обработчики называют по следующему принципу «on+имя_события». Например, onclick. JavaScript – однопоточный язык, поэтому даже при обработке нескольких событий, возникающих одновременно на элементе, обработчики всегда выполняются последовательно.

    Виды кликов-событий:

mousedown – нажатие на кнопку мыши

mouseup – нажатая кнопка отпущена

click – клик мыши левой кнопкой мыши

dbclick – двойной клик левой кнопкой мыши

contextmenu – клик правой кнопкой мыши

События mousedown и mouseup в основном используются, когда идет нажатие на кнопку, перемещение, а потом мышь отпускается. Например, при выделении текста, или переносе объекта.А события click и dblclick в основном нужны для работы с простыми кликами. Клик происходит при последовательных mousedown->mouseup на одном и том же объекте. Если передвинуть мышь куда-то между mousedown и mouseup, то событие click не произойдет. Событие contextmenu возникает при правом клике мышью, и по умолчанию вызывает контекстное меню. Не на всех браузер показ меню можно отключить.

    Cводная таблица по возможности отключения родной реакции браузера:

Левая кнопка Средняя кнопка Правая кнопка
Internet Explorer Да Да Да
Firefox Да Править конфиг Да
Safari Win Да Да Да
Opera Да Нет Нет

Назначить обработчик на конкретное событие можно следующими способами:

1) Через атрибут HTML-тега.  Обработчик указывается в виде встроенной записи в атрибуте.

Пример,

<div class= ”cell” id=”1” onclick= “alert (‘Это первая ячейка ’)”> </div>

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

2) Через свойство объекта. Обработчик указывается через свойство on+имя_события соответствующего элемента. Для этого нужно получить элемент и назначить обработчик свойству. Получить элемент можно с использованием стандартных средств поиска элементов: getElementById, getElementByTagName, getElementbyName и т.д.

getElementById – метод объекта document, который возвращает ссылку на элемент, имеющий атрибут id с указанным значением. Если элемент с указанным элементов найден, метод вернет ссылку на этот элемент. Если на странице используется более одного элемента с указанным идентификатором, метод вернет ссылку на первый из них.

Пример, var element = document.getElementById (‘id’);

getElementByTagName – метод, который возвращает список элементов, учитывая имя тега.

Пример, получим все div-элементы:

var element = document.getElementByTagName (‘div’);

getElementsByName – метод, который возвращает все элементы с данным атрибутом name.

        Пример, получим все элементы с именем age:

        var elements = document.getElementsByName(‘age’);

Пример,

<div class= ”cell” id=”1”> </div>

document.getElementById (‘1’).onclick = function ()

{

alert(‘Это первая ячейка’);

}

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

Функции.

Назначение функций – оптимизация кода, а именно вынесение кода в отдельный блок программы и использование его посредством вызова для текущего элемента при необходимости. Объявление собственной
функции - вначале идет ключевое слово
function, после него идет имя функции, а затем список параметров в скобках (функция может и не приминать никакие параметры) и тело функции (код, который выполняется при ее вызове).

function имя_функции (аргумент1, аргумент2 ….. аргументN)

{

//действия;

}

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

Особенности объявления собственных функций:

· Передаваемые значения копируются в параметры функции и становятся локальными переменными.

· Параметры функции копируются в её локальные переменные.

· Можно объявить новые локальные переменные при помощи var.

· Значение возвращается оператором return ....

· Вызов return тут же прекращает функцию.

· Если return; вызван без значения, или функция завершилась без return, то её результат равен undefined.

Рекурсивные функции.

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

Стандартные функции JavaScript для работы со случайными числами.

Встроенная функция в JavaScriptMath.random(). Эта функция всегда возвращает число между 0 и 1.

Пример,

var a = Math.random();

document.write (a);

Недостаток использования такой вариации функции заключается в том, что функция создает число в ограниченном промежутке. Расширение диапазона, к примеру, от 0 до 100 будет выглядеть так:

Пример,

var a = Math.random()*100;

document.write (a);

 

Особенностью использования этой функции заключается в том, что она создает число вещественного типа. Если необходимо сгенерировать целое число, то можно воспользоваться методом округления Math. round ():

Пример,

var a = Math.round (Math.random()*100);

document.write (a);

 

Существует еще одна функция округления только в меньшую сторону:

Пример,

var a = Math.floor (3.767);

document.write (a);

    Результатом выполнения такой функции является число 3.

 

Для получения случайного целого числа в диапазоне от min до max можно воспользоваться следующей функцией:

function a (min,max)

{

return Math.round (Math.random()*(max-min)+min);

}

      

 

 

Таймеры setTimeout() и setInterval().

Существует две функции отложенного запуска setTimeout() и setInterval(). Отличие этих функций заключается в том, что первая запускает код единожды, вторая – через заданный промежуток времени.

Синтаксис этих функций:

setTimeout (аргумент1, аргумент2);

setInterval (аргумент1, аргумент2);

 

Обе эти функции в качестве первого аргумента принимают инструкцию, которую необходимо выполнить, в качестве второго – задержка в миллисекундах.

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

В JavaScript  существует две функции для отложенного запуска кода: setInterval () и setTimeout(). Важное отличие этих функций от функций sleep в других языках заключается в том, что sleep приостанавливает выполнение программы на определенный промежуток времени Формат записи этих функций одинаков. Они обе принимают два аргумента.

setInterval (функция, задержка в миллисекудах);

Действия setTimeout и setInterval можно отменить функциями clearTimeout() и clearInterval().

 

Рассмотрим пример: при наведении мыши на элемент необходимо через две секунды показать сообщение. Однако, если в течении этих двух секунд указатель мыши был убран с элемента, то сообщение показывать не нужно.

<body>
<div id= "test"></div>
</body>

var tmId;
var t= document.getElementById('test');
t.onmouseover = function (){
 tmId=setTimeout (' alert ("Orange block")', 2000);
}t.onmouseout =function () {
clearTimeout(tmId);
}           Функции setTiomeout() и setInterval() «делают отметки» о том, что определенный код нужно запустить через какое-то количество миллисекунд, а скрипт продолжает работать.       *Выполнение кода происходит не через строго заданный промежуток времени, а не раньше, чем через этот промежуток. Если в нужный момент времени будет выполняться какой-либо код, то интерпретатор дождется его окончания, после чего запустит код по таймеру.

    Рассмотрим пример простой анимации, а именно движение оранжевого квадратика по горизонтальной оси. (слева-направо MarginTop,сверху-вниз -marginLeft).

setInterval() будет запускать функцию через указанный промежуток времени. Эта функция вызывается повторно вне зависимости от того, закончилось ли выполнение предыдущей функции или нет.  В тех случаях, когда функция громоздкая возможно переполнение стека вызовов, так как функции будут становится в очередь. Минимальное временя, которое можно устанавливать – 4 миллисекунды, при установке значения 0 миллисекунд, то скорее всего это приведет либо к ошибке, либо к другим сбоям.

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

Пример, рассмотрим реализацию движения оранжевого прямоугольника по экрану с использованием таймера.

Для этого создадим 3 файла: index.html (1), style.css (2), js.js (3)

(1)

 

(2)

 

(3)

 

Создайте проект с произвольным именем и указанными файлами, после запустите и просмотрите результат в браузере.

 

Задание.

Реализовать падающий снег на фоне леса.

 


Дата добавления: 2021-05-18; просмотров: 46; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!