Разберите скрипт самостоятельно
<SCRIPT LANGUAGE="javascript">
var name = prompt("Напишите свое имя, пожалуйста","")
var d = new Date();
var y = d.getFullYear();
var da = d.getDate();
var m = d.getMonth() + 1;
var t = da + '/' + m + '/' + y;
document.write("<TITLE>")
document.write("Привет, "+name+ ". Сегодня " +t+ ". Спасибо, что зашли.");
document.write("</TITLE>")
</SCRIPT>
- попробуйте поработать с переменными, формируя документ в зависимости от введенных значений
например:
запросите новый заголовок окна и измените текущий заголовок на тот что ввел пользователь
выведите на странице текущую дату в следующем виде: “Сегодня 15 день 10 месяца 2012 года”
сформируйте список из трех элементов которые запросите у пользователя
попробуйте нарисовать и заполнить таблицу следующего вида:
Любимый цвет | Любимое блюдо | Любимое время года |
В соответствующие ячейки поместите ответы пользователя.
Лабораторная работа № 2
Рассмотрим событиям (events). События (event) и обработчики событий (event handler) относятся к JavaScript, но они скорее «встроены» в HTML-код, а не существуют самостоятельно. Они входят в структуру документа НТМL, не требуя команд <SCRIPT> и </SCRIPT>. Сами они не скрипты, а скорее область взаимодействия между вашей страницей и читателем.
События — это то, что происходит. Они добавят динамики вашему сайту. Среди разнообразных обработчиков событий для начала мы выберем один, самый популярный, — onMouseOver (навести мышь).
Скрипт
<A HREF="http://www.newmail.ru" onMouseOver="window.status='Бесплатный хостинг'; return true">Ссылка</A>
Разбор скрипта
Во-первых, onMouseOver (обратите внимание на заглавные буквы) представляет собой обработчик событий (Event Handler) гипертекстовой ссылки. Он используется внутри гиперссылки. Формат ссылки остается без изменений. Те же команды и те же двойные кавычки. onMouseOver ставится сразу же после адреса URL. Событие (Event) приводится в действие, когда браузер распознает onMouseOver="". Объектом в данном случае является window (окно), оно существует; status (статус) представляет собой property (свойство) oкна. Это небольшой участок окна, где должен разместиться следующий текст. Если у window есть изменяемое свойство status, значит, можно изменить и другие свойства окна. После window.status следует знак равенства = и то, что должно произойти. В данном случае это текст в одинарных кавычках. Он появится в строке состояния, когда вы наведете курсор на ссылку.
Пожалуйста, обратите вниманиена точку с запятой в конце строки.
return true Эти два слова имеют не последнее значение. Они дают скрипту указание проверить, есть ли строка состояния. Если отчет (return) соответствует действительности (true), тогда происходит событие. Текст в строке состояния уже не изменяется и не изменится, сколько раз вы не наводили бы на нее курсор.
Другие свойства
Вернемся к свойствам. Если они есть у окна, другие объекты тоже должны иметь свойства. В HTML цветом фона страницы управляет команда BGCOLOR. То же самое и здесь, только обязательно соблюдайте регистр. В JavaScript он пишется bgColor. Попробуем создать ссылку, которая изменяла бы фон страницы с помощью обработчика onMouseOver.
- Во-первых, раз это ссылка, то сохраним ту же схему, которой уже пользовались.
- Куда идет команда bgColor, когда вы пишете веб-страницу? В документ. Значит, это и есть нужный нам объект. Заменим window на document.
- Мы собираемся менять фоновый цвет объекта, потому заменим status на bgColor.
- Больше нам текст не нужен, так что заменим его цветом. Возьмем белый.
- Нам нужно, чтобы новый цвет оставался независимо от того, сколько раз мы будем наводить курсор на ссылку, потому вставляем return true после точки с запятой.
Вот что получилось...
<a href="http://www.newmail.ru" onMouseOver="document.bgColor='white'; return true">Не щелкать</a>
Мы хотим, чтобы два события произошли одновременно, поэтому не будем разделять команды точкой с запятой, так как это означает конец.
Новое правило: ставьте запятую, чтобы отделить друг от друга разные команды JavaScript, происходящие одновременно.
Раз нам нужно, чтобы обе команды действовали одновременно, ставим кавычки в самом начале первой и в самом конце второй. Таким образом, мы показываем браузеру, что все это одно событие.
Однако нам еще могут понадобиться одинарные кавычки...
Вернем документу первоначальный цвет...
<a href="http://www.newmail.ru" onMouseOver="document.bgColor='334775', nMouseOver=window.status='Бесплатная почта'; return true">Не щелкать</a>
Задание
Рассмотрим новый метод, alert() (предупредить). Он вызывает небольшое диалоговое окно с текстом и кнопкой OK.
Попробуйте сделать так, чтобы окно предупреждения всплывало при наведении курсора на ссылку. Вот формат команды:
alert('текст в окошке')
Рассмотрим, как действуют другие события. Все они работают по одной схеме.
Команды и эффекты
Команда onClick (на щелчок)
Вы уже знаете, что onMouseOver запускает событие, если навести курсор на ссылку. Следовательно, щелкнув по ссылке, можно с таким же успехом запустить событие через onClick. Чтобы продемонстрировать действие команды, воспользуемся методом alert. Схема:
alert('текст, который появится в окне')
Таким образом, получаем:
<a href="http://www.jsp.newmail.ru" onClick="alert('Уже уходите!');"> Жмите сюда</a>
Помните, что внутри одинарных кавычек нельзя употреблять слова с апострофами ', иначе браузер поймет их, как окончание текста.
Команда onFocus(на фокус)
Это команда, которая вызывает действие, когда пользователь «фокусируется» на элементе страницы. Это годится для форм: флажков (checkbox) и текстовых полей (textbox). Вот пример:
<form>
<input type="text" size="30" onFocus="window.status='Текст в строке состояния';">
</form>
Команда onBlur (на потерю фокуса)
Если можно сосредоточиться на объекте, значит, можно и «потерять фокус». оnBlur позволяет сообщить пользователю о том, что он изменил свой ответ. Этот обработчик не так часто используется.
<form>
<input type="text" size="45" value="Впишите свое имя и щелкните по другой строке" onBlur="alert('Вы изменили ответ — уверены, что он правильный?');">
</form>
Команда onChange(на изменение)
Действие этой команды очень похоже на действие предыдущей, onBlur. Ее главная задача — проверка. Этот обработчик события проверяет, сделал ли пользователь то, что вы от него просили. Пример очень похож на предыдущий, но действует все-таки по-другому.
<form>
<input TYPE="text" size="45" value="Измените текст и щелкните по другой строке" onChange="window.status='Текст был изменен';">
</form>
Команда onSelect(на выделение)
Эта команда работает так же, как и три предыдущие, отмечая, что в поле ввода произошли изменения, — в данном случае был выделен текст.
Команда onSubmit(на отправку)
Это очень популярная команда. Она позволяет вызвать какое-либо действие, когда вы нажимаете кнопку Submit (отослать, отправить). Многим очень хочется, чтобы после того, как пользователь нажимает на кнопку, у него на экране появлялась страница с надписью: «Спасибо, что вы нам написали».
Формат такой:
<form>
<input TYPE="submit" onSubmit="parent.location='thanksalot.html'";>
</form>
Новая команда parent.location — это стандартная схема ссылки на другую страницу. Можно подумать, что parent (источник) — это объект, а location (местонахождение) — метод. Неверно. В данном случае parent является свойством окна браузера, а location — объектом, который появится в этом окне. То есть для ясности просто имейте в виду, что parent.location='' означает ссылку.
Команды onLoad и onUnload(на вход и выход)
Обе они помещаются внутри строки HTML <BODY>. Они вызывают событие, когда страница открывается или закрывается, то есть когда вы уходите со страницы. Эти команды потребуются вам, когда мы возьмемся за функции.
Задание
Необходимо создать форму, которая будет взаимодействовать с пользователем.
Форма должна иметь три элемента:
- поле ввода с просьбой ввести имя;
- два поля для флажков с вопросом о том, что больше нравится пользователю, мороженое или шоколад;
- кнопку отправки данных.
С каждым элементом должно произойти следующее:
- При вводе имени в строке состояния должны появиться слова: «Впишите сюда свое имя».
- Два поля с флажками должны отослать в строку состояния слова: «Вы выбрали...» и выбор пользователя.
- При нажатии на кнопку должно выскочить окно предупреждения, благодарящее пользователя за участие в опросе.
Лабораторная работа № 3
Cоздавая переменную, вы присваиваете имя результату команды или события JavaScript. Создавая функцию, вы делаете почти то же самое, только имя присваивается целой серии команд. Множество команд JavaScript вы комбинируете в одну.
Рассмотрим скрипт.
Сам скрипт состоит из двух частей: собственно функции и команды onLoad, которая ее запускает.
Вот обе части:
<SCRIPT LANGUAGE="javascript">
<!-- Скрыть от браузеров, не читающих Javascript
function dateinbar()
{
var d = new Date();
var y = d.getFullYear();
var da = d.getDate();
var m = d.getMonth() + 1;
var t = da + '/' + m + '/' + y;
defaultStatus = "Вы прибыли на страницу " + t + ".";
}
// не скрывать -->
</SCRIPT>
...и команда onLoad в <BODY>:
<BODY BGCOLOR="хххххх" onLoad="dateinbar()">
Разбор скрипта
Что такое <!-- --> ?
Еще одна команда. Этими знаками вы пользуетесь для комментариев в теле HTML:
<!-- Это текст комментария, не видимый на странице -->
Если пользоваться этими командами, тогда браузер успешно проигнорирует незнакомый текст и покажет страницу.
Однако соблюдайте несколько правил:
- Команды комментария должны находиться между <SCRIPT> и </SCRIPT>. Если вы поставите их снаружи, то браузер посчитает комментарием весь скрипт и ничего не выйдет.
- Текст после команды <!-- должен находиться на одной строке.
- Перед заключительной командой --> должна стоять двойная дробь //, иначе JavaScript примет ее за часть скрипта. Ошибка.
- Нет, совсем не обязательно писать текст к этим командам.
Вернемся к разбору
Сначала первая часть скрипта устанавливает функцию. Потом команда в строке <BODY> ее запускает. Давайте сначала разберем функцию.
function dateinbar()
{
var d = new Date();
var y = d.getFullYear();
var da = d.getDate();
var m = d.getMonth() + 1;
var t = da + '/' + m + '/' + y;
defaultStatus = "Вы прибыли на страницу " + t + ".";
}
Схема довольно понятная. Вы пишете "function" и даете ей любое имя, какое вашей душе угодно, точно так же, как мы делали с переменными. Оно может быть какой угодно длины, если в нем нет пробелов и это слово уже не участвует в JavaScript. Но обратите внимание, что после имени функции стоят круглые скобки, как и после метода. То есть, создавая функцию, как бы создаем новый метод для выполнения задачи. На этот раз я выбрал имя "dateinbar()" (дата в строке состояния), потому что это функция и делает — помещает дату в строку состояния.
Очень важно!
Команды, из которых состоит функция, должны быть заключены в фигурные скобки {}. Текст внутри фигурных скобок должен быть вам уже знаком. Тот же скрипт мы использовали пару уроков назад.
- Создается переменная для года;
- Еще одна для числа;
- Еще одна для месяца;
- Затем четвертая для даты целиком;
Последняя команда новая:
defaultStatus = "Вы прибыли на страницу " + t + ".";
"defaultStatus" (строка состояния по умолчанию) — свойство объекта window. Его цель — поместить текст в строку состояния внизу окна браузера. Почему не написать просто window.status? Этого нельзя сделать, потому что такая схема используется для события, например, с командой onClick. Раз строка состояния не находится внутри команды HTML, берем defaultStatus. Есть только одна строка состояния — она же и по умолчанию.
Команда "onLoad="
Команда onLoad (на вход, загрузку) (обратите внимание на заглавные буквы) говорит браузеру, что, загружая страницу, он должен выполнить следующее. В нашем случае следует функция dateinbar{}.
Эта команда почти всегда располагается в строке <BODY> документа HTML. И почти всегда за ней следует функция, но это необязательно. Можно с таким же успехом поместить туда и команду объект.метод.
Расположение элементов
Это имеет не последнее значение. Вы знаете, что onLoad идет в строку BODY. Скрипт с функцией должен находиться между командами <HEAD> и </HEAD>. Хотя на самом деле его можно поместить где угодно, но если вы расположите его после команды onLoad, он заработает только после того, как загрузится вся страница. Поместив скрипт перед командой onLoad, вы помещаете его в память компьютера, и когда onLoad вызовет его, он будет готов к работе.
Практически любой набор команд JavaScript можно записать в виде функции.