Назначение обработчика onclick.
Для того, чтобы скрипт реагировал на событие — нужно назначить хотя бы одну функцию-обработчик. Обычно обработчики называют «on+имя события», например: onclick.
Существует несколько способов назначать обработчик на конкретное событие элемента. Все они представлены ниже. Обработчик события можно указать в виде inline-записи, прямо в атрибуте onсобытие. Например, для обработки события click на кнопке input, можно назначить обработчик onclick вот так:
<input id="b1" value="Нажми Меня" onclick="alert('Спасибо!');" type="button"/>
Второй вариант когда обработчик задается в виде функции:
div class='box' onclick="boxclick('yellow')"> Кликни по мне</div>
<script>
function boxclick(color)
{
mybody=document.getElementById('b');
mybody.style.backgroundColor=color;
mybody.style.color='white';
//alert("Вы кликнули по тегу Div");
}
</script>
В этом случае скрипт может быть очень большим и не будет мешать восприятию HTML кода.
Для того чтобы воздействовать на объекты и менять их в функциях нам необходимо назначить id для каждого элемента и в коде получить этот элемент используя функцию document.getElementById('myElement')
и затем изменить нужный атрибут или стиль.
mybody=document.getElementById('b');
mybody.style.backgroundColor=color;
mybody.style.color='white';
Для выполнения последовательных действий в javascript используются таймеры. Для управления таймером необходимо выполнить функцию setInterval(sec, 10) или setTimeout(sec,10). Первый параметр это имя функции которая запустится и второй параметр это интервал в миллисекундах. Функция setInterval задает интервал выполнения и будет выполнятся непрерывно, а setTimeout выполнит функцию одни раз через интервал указанный вторым параметром.
setInterval(sec, 10); setTimeout(sec,10);
<html>
<head>
<meta charset='utf-8'>
<script>
function boxclick(color)
{
mybody=document.getElementById('b');
mybody.style.backgroundColor=color;
mybody.style.color='white';
//alert("Вы кликнули по тегу Div");
}
top1=400;
left1=400;
function up()
{
mode='up';
}
function sec()
{
if(mode=='up')
{
top1=top1-1;
mydiv=document.getElementById('control');
mydiv.style.top=top1+'px';
}
}
setInterval(sec, 10);
</script>
<style>
.box
{
width:100px;
height:100px;
background-color:yellow;
}
.box1
{
width:100px;
height:100px;
background-color:red;
}
.box2
{
width:100px;
height:100px;
background-color:green;
}
.box3
{
width:100px;
height:100px;
background-color:blue;
}
.up
{
position:absolute;
top:0px;
left:100px;
width:100px;
height:100px;
background-color:yellow;
}
.down
{
position:absolute;
top:200px;
left:100px;
width:100px;
height:100px;
background-color:yellow;
}
.left
{
position:absolute;
top:100px;
left:0px;
width:100px;
height:100px;
background-color:yellow;
}
.right
{
position:absolute;
top:100px;
left:200px;
width:100px;
height:100px;
background-color:yellow;
}
.control
{
position:absolute;
top:400px;
left:400px;
width:100px;
height:100px;
background-color:red;
}
</style>
</head>
<body id='b'>
Текст Текст Текст Текст Текст
<!--div class='box' onclick="boxclick('yellow')"> Кликни по мне</div>
<div class='box1' onclick="boxclick('red')"> Кликни по мне</div>
<div class='box2' onclick="boxclick('green')"> Кликни по мне</div>
<div class='box3' onclick="finction(){alert(123)}"> Кликни по мне</div>
-->
<div class='up' onclick='up()' >Вверх</div>
<div class='left'>Налево</div>
<div class='right'>Направо</div>
<div class='down'>Низ</div>
<div class='control' id='control'></div>
</body>
</html>
Листинг примера программы которая демонстрирует работу с таймером и использование обработчика onclick
Задания для самостоятельной работы.
- Используя таймер сделать светофор.
- Сделать к светофору кнопку для вызова зеленого света.
- Используя таймер сделать изменяющийся цвет body.