Лекция: Включение скриптов JavaScript в HTML-код

Чтобы добавить сценарий JavaScript в документ, используется пара дескрипторов <script> и </script>. Код скрипта выполняется незамедлительно, если только этот код не является функцией. Скрипты могут размещаться во всех частях документа HTML. Скрипт можно разместить в отдельном файле с расширением js. Например

<script type=«text/javascript» src="/jspr/pr.js"></script>

В этом варианте в директории /jspr/ должен находиться файл pr.js, который содержит код JavaScript без тегов <script> и </script>.

Скрипт можно разместить в дескрипторе HTML. Последняя конструкция называется обработчиком события. Событие представляет собой указатель на метод – обработчик события, который вызывается при возникновении события. Пример:

<!-- Использование кнопки и события -->

<html> <body>

<form>

<input type=«button» value=«click me»

onclick=«window.alert(' Hello!')»>

</form>

<a href=«pr3.htm» onclick=«alert('Links clicked')»>

click me</a>

</body>

</html>

В следующем примере чтобы получить имя браузера, следует нажать кнопку «Browser»

<!-- пример pr15: получение типа и версии браузера -->

<html> <head>

<title>Test of Browser name</title>

</head>

<body>

<h1 align=center>Проверка типа браузера</h1>

<P><hr>

<form name=fr>

<input type=button name=browser value=Browser

onClick= «alert(window.navigator.appName+navigator.appVersion)»>

</form>

</body> </html>

Имя и версия браузера возвращаются через свойства navigator.appName и navigator.appVersion

1. Выполнить следующие задания на JavaScript:

1. Создать html-документ. Поместить туда текст «Добро пожаловать на сайт!»

c помощью директивы document.write(). Вывести строку «Hello World» в диалоговые окна alert (“string”) и confirm((“string”).

2. Добавить на страницукомментарии

<!--This is a comment-->

//This is a comment

/*This comment has more than one line*/

3. Создать страницу, которая предлагает (в диалоговом окне prompt()) пользователю ввести его имя (по умолчанию «гость»), а после этого будет приветствовать его по имени. Если пользователь отказывается вводить свое имя, то на странице должно появиться сожаление по этому поводу. Приветствие должно отображаться в основной части страницы с помощью инструкции document.write(«str»);. В сценарий добавьте комментарий, поясняющий принцип выполнения операторов этого сценария.

Метод promt() отображает диалоговое окно с сообщением, полем ввода и двумя кнопками OK и CANCEL. Он возвращает введенное значение, если нажата кнопка OK, или специальное значение null, если нажата кнопка CANCEL.

4. Создайть кнопку «Поздороваться» и обработайте событие OnClick кнопки «Поздороваться» таким образом, чтобы по щелчку на кнопке выводилось бы окно confirm() с сообщением «Еще раз здравствуйте!».

5. Напишите оператор JavaScript, который отображает приветствие новых посетителей Web-страницы на уровне заголовка <h1 > страницы документа.

6. Напишите в теле документа скрипт формирующий в документе тег параграфа <p>с помещенной в него фразой «Заходи, гостем будешь».

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

«www.w3.org/TR/html4/loose.dtd»>

<html>

<head>

<title>Добро пожаловать на сайт!</title>

<meta http-equiv=«Content-Type» content=«text/html; charset=UTF-8»>

 

<script type=«text/javascript»>

window['username'] = false;

function action() {

confirm('Приветствую Вас!');

 

}

function sayAgain() {

alert('Здравствуйте еще раз !')

}

function writeHello() {

var str = prompt('Введите свое приветственное сообщение', '');

if (str) {

var newEl = document.createElement('h1');

newEl.innerHTML = str;

document.getElementById('strings').appendChild(newEl);

}

}

function createPTag() {

var newEl = document.createElement('p');

newEl.innerHTML = 'Приветствую Вас, многоуважаемый Гость!!!';

document.getElementById('strings').appendChild(newEl);

}

</script>

</head>

<body onload=«action()»>

<div id=«strings»></div>

<input type=«button» onclick=«sayAgain()» value=«Поздороваться еще раз» />

<input type=«button» onclick=«writeHello()» value=«Написать свое приветствие» />

<input type=«button» onclick=«createPTag()» value=«Сформировать тег параграфа» />

</body>

</html>

 

7. Создать страницу, которая предлагает (в диалоговом окне) пользователю ввести число, а затем выводит информацию о четности числа на страницу документа. Для выяснения четности воспользоваться

· оператором if … else;

· оператором? :;

· оператором switch.

Функция parseInt поможет преобразовать строку к целому числу.

8. Создайте страницу, которая предлагает (в диалоговом окне) пользователю ввести число, а затем выводит кубы всех чисел от 1 до введенного числа при условии, что они не превосходят 1000. Воспользоваться

· циклом for;

· циклом while;

· циклом do while

· if()

9. Вывести в заголовок строки: «раз»; «два»; «три»; «четыре»; «пять»; «вышел зайчик погулять».

 

Пример создания бегущей строки в заголовке браузера.

<html>

<head>

<title>JavaScript в примерах</title>

<script language=«JavaScript»>

var msg = document.title;

var c = 0;

function animateTitle()

{

document.title = msg.substring(0,c);

if(c == msg.length)

{

c = 0;

setTimeout(«animateTitle()», 2000)

}

else

{

c++;

setTimeout(«animateTitle()», 200)

}

}

animateTitle()

</script>

</head>

<body>

<h1>Пример с заголовком браузера</h1>

</body>

</html>

 

Такой же пример

<html>

<head>

<title>JavaScript в примерах</title>

<meta http-equiv=«Content-Type» content=«text/html; charset=UTF-8»>

<script type=«text/javascript»>

var msg = document.title;

var c = 0;

var strings = new Array(«раз», «два», «три», «четыре», «пять», «вышел зайчик погулять»);

function animateTitle()

{

document.title = strings[c];

if(c == strings.length — 1)

{

c = 0;

setTimeout(«animateTitle()», 2000)

}

else

{

c++;

setTimeout(«animateTitle()», 200)

}

}

</script>

</head>

<body onload=«animateTitle()»>

<div id=«strings»></div>

</body>

</html>

Полем status bar называют поле нижней части окна, в котором отображается информация о состоянии браузера (загрузка документа, загрузка графики, завершение загрузки и т.п.). Программа на JavaScript имеет возможность работать с этим полем с помощью двух свойств:

window.status — значение поля статуса;

window.defaultStatus — значение поля статуса по умолчанию.

Значение свойства status можно изменить — и оно тут же будет отображено в поле статуса. Свойство defaultStatus тоже можно менять — и сразу по его изменении оно отображается в поле статуса. Пример:

window.status = «put your message here»

a)Напишите оператор JavaScript, который отображает сообщение в строке состояния, приветствующее новых посетителей Web-страницы.

b)Создайте страницу на которой расположена кнопка «Установить техт в строке состояния» по нажатию на которую в строку состояния выводится приветствие.

c) Расположите на странице ссылку. При наведении мыши на ссылку отобразите в строке состояния текст 'Заходи, не пожалеешь!' (обработка события onMouseOver), при уходе курсора со ссылки отобразите в строке состояния текст 'Напрасно, не зашел' (обработка события onMouseOut).

d) Создать Web-страницу с «бегущим текстом» в строке статуса состояния браузера

e) Вывести текущее время в окно документа и в окно статуса

Пример программы выводящей время в строке статуса.

<HTML>

<HEAD>

<SCRIPT>

function time_scroll()

{

var d = new Date();

window.status = d.getHours()

+ ':' + d.getMinutes()

+ ':' + d.getSeconds();

setTimeout('time_scroll()',1000);

}

</SCRIPT>

</HEAD>

<BODY onLoad=«time_scroll()»>

<H1>Часы в строке статуса</H1>

</BODY>

</HTML>

Метод setTimeout() используется для создания нового потока вычислений, исполнение которого откладывается на время (в миллисекундах), указанное вторым аргументом:

idt = setTimeout(«JavaScript_код»,Time);

Если в Mozilla не изменяется строка состояния, то следует выполнить: Инструменты -> Настройки -> Содержимое и там напротив JavaScript -> Дополнительно -> Изменять текст в строке статуса.

10. Вывести на странице регулярно обновляемую информацию:

a) о том, сколько дней осталось до нового года, в зависимости от текущей даты;

b) о том, сколько часов и минут осталось до конца рабочего дня, или до начала нового рабочего дня в зависимости от текущего времени. Рабочее время считать с 9.00 до 17.00. Расширенный вариант: рабочими днями считать понедельник, вторник, среду, четверг, пятницу, а в рабочее время есть обед с 12.00 до 12.30.

Пример вывода даты и времени на сайте с помощью JavaScript.

Для получения текущего времени воспользуемся объектом Date(), который без аргументов и возвращает нужное нам текущее время.

time=new Date();

Но формат даты, определяемый этим объектом, нас не устраивает, для примера посмотрите

alert (Date());

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

getSeconds() — возвращает число секунд в диапазоне от 0 до 59;

getMinutes() — возвращает число минут в диапазоне от 0 до 59;

getHours() — возвращает число часов в диапазоне от 0 до 23;

getDay() — возвращает день недели в диапазоне от 0 до 6 (0->воскресенье, 1 -> понедельник, и т.д.);

getDate() — возвращает день месяца в диапазоне от 1 до 31;

getMonth() — возвращает номер месяца в диапазоне от 0 до 11;

getFullYear() — возвращает год в виде четырех чисел, минимальное значение 1970.


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

time=new Date();

time_sec=time.getSeconds();// получаем секунды

time_min=time.getMinutes();// получаем минуты

time_hours=time.getHours();// получаем часы

Если возвращаемое значение функциями getSeconds(), getMinutes() и getHours() будет меньше 10, то цифры 0 не будет впереди. Поэтому напишем функцию представляющую вид часов в привычном для виде

function wr_hours()

{

time=new Date();

time_sec=time.getSeconds();

time_min=time.getMinutes();

time_hours=time.getHours();

time_wr=((time_hours<10)?«0»:"")+time_hours;

time_wr+=":";

time_wr+=((time_min<10)?«0»:"")+time_min;

time_wr+=":";

time_wr+=((time_sec<10)?«0»:"")+time_sec;

}

Теперь нужно нам это время вывести на экран монитора. Воспользоваться функцией document.write() не получится, так как нам нужно время обновлять через определенный промежуток времени. Воспользуемся свойством innerHTML, которое есть у каждого элемента HTML-кода. Это свойство содержит весь HTML-код данного элемента. Его можно изменять. И если его изменить, то изменится HTML-код, содержащийся в элементе, а, следовательно, и содержимое веб-странички. Поэтому поступим следующим образом. Будем выводить время в элементе span, которому дадим уникальный идентификатор hours. Впоследствии в JavaScript получим к нему доступ выражением

obj_hours=document.getElementById(«hours»)

<span id=«hours»></span>

<script type=«text/javascript»>

obj_hours=document.getElementById(«hours»);

function wr_hours()¶{

time=new Date();

time_sec=time.getSeconds();

time_min=time.getMinutes();

time_hours=time.getHours();

time_wr=((time_hours<10)?«0»:"")+time_hours;

time_wr+=":";

time_wr+=((time_min<10)?«0»:"")+time_min;

time_wr+=":";

time_wr+=((time_sec<10)?«0»:"")+time_sec;

obj_hours.innerHTML=time_wr;

}

wr_hours();

</script>

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

setInterval("{выражение}", {временной интервал});

Мы зададим интервал равный одной секунде (1000 миллисекунд). Чаще обновлять нет смысла, так как у нас время выводится с точностью до секунды. Соответственно получим следующий код

<span id=«hours»></span>

<script type=«text/javascript»>

obj_hours=document.getElementById(«hours»);

function wr_hours()

{

time=new Date();

 

time_sec=time.getSeconds();

time_min=time.getMinutes();

time_hours=time.getHours();

time_wr=((time_hours<10)?«0»:"")+time_hours;

time_wr+=":";

time_wr+=((time_min<10)?«0»:"")+time_min;

time_wr+=":";

time_wr+=((time_sec<10)?«0»:"")+time_sec;

obj_hours.innerHTML=time_wr;

}

wr_hours();

setInterval(«wr_hours();»,1000);

</script>

Теперь добавим дату и день недели. Так как функции getDay() и getMonth() возвращают лишь числа, а мы хотим видеть названия дня недели и месяца, то добавим два массива с перечислением дней недели и названиями месяцев.

name_month=new Array («января»,«февраля»,«марта», «апреля»,«мая», «июня»,«июля»,«августа», «сентября»,«октября», «ноября»,«декабря»);

name_day=new Array («воскресенье»,«понедельник»,«вторник», «среда»,«четверг», «пятница»,«суббота»);

В итоге получим следующий код

<html>

<head>

<title>Часы и дата на JavaScript</title>

</head>

<body>

<h1>Часы и дата на JavaScript</h1>

<div><span id=«hours»></span>

</div>

<script type=«text/javascript»>

obj_hours=document.getElementById(«hours»);

name_month=new Array («января»,«февраля»,«марта», «апреля»,«мая», «июня»,«июля»,«августа»,«сентября», «октября»,«ноября»,«декабря»);

name_day=new Array («воскресенье»,«понедельник», «вторник»,«среда»,«четверг», «пятница»,«суббота»);

function wr_hours()

{

time=new Date();

time_sec=time.getSeconds();

time_min=time.getMinutes();

time_hours=time.getHours();

time_wr=((time_hours<10)?«0»:"")+time_hours;

time_wr+=":";

time_wr+=((time_min<10)?«0»:"")+time_min;

time_wr+=":";

time_wr+=((time_sec<10)?«0»:"")+time_sec;

time_wr=" сегодня "+name_day[time.getDay()]+", "+time.getDate()+" "+name_month[time.getMonth()]+" "+time.getFullYear()+" г. время "+time_wr;

obj_hours.innerHTML=time_wr;

}

wr_hours();

setInterval(«wr_hours();»,1000);

</script>

</body>

</html>

И теперь на сайте будет дата и «тикающие» часы.

11. Непрерывно выводите заголовок первого уровня в стиле печатной машинки. После того, как строка напечатается полностью не стирайте ее побуквенно как в примере, повторяйте вывод сначала. Измените стиль заголовка: шрифт крупнее в 2 раза, красный цвет шрифта, курсив.

Пример вывода строки в стиле печатной машинки

<html>

<head>

<title>Пример с печатающими буквами</title>

 

<script type=«text/javascript»>

 

var delay = 50; // задержка

var pos = 0;

//Строка, которая будет выводиться

var msg = 'Пример с печатающими буквами';

// функция, печатающая слова

function printWords(text, dir)

{

var typingtext = text.substring(0, pos);

document.getElementById(«type»).innerHTML = typingtext;

pos += dir; // печатаем или стираем текст

if (pos > text.length)

setTimeout('printWords("'+text+'",'+(-dir)+')', delay * 50);

else

{

if(pos < 0)

{

 

dir = -dir;

}

setTimeout('printWords("'+text+'",'+dir+')', delay);

}

}

</script>

 

</head>

<body onLoad=«printWords(msg, 1)»>

 

<h1>Эффект печатной машинки</h1>

 

<div id=«type»></div>

 

</body>

</html>

 

12. Сценарий в разделе body вызывает функцию, которая возвращает текст, введенный в диалоговом окне prompt ().

<html> <head>

<script type=text/javascript">

function askName() {

var name = prompt («What is your name, please?11,»")

return name

}

</script>

</head>

<body>

<script type=«text/javascript»>.

document.write(«Welcome to my web page, » + askName() + ".")

</script>

</body>

</html>

По событию onclick вывести это сообщение в окно статуса состояния и в другие диалоговые окна.

 

еще рефераты
Еще работы по информатике