Концепция
Сегодня мы приступим к нашей последней новой теме
— массивы (array). Вы уже
узнали о переменных. Каждая переменная имеет одно значение, но
иногда вам необходим массив (array), или
переменная, которая имеет множество значений.
В этом примере программа
просит пользователя угадать телевизионный канал из перечня телеканалов.
Запрос повторяется до тех пор, пока пользователь не угадает. Каждый раз
при нажатии кнопки выбирается новый телеканал.
Скрипт
<HTML>
<HEAD>
<SCRIPT
LANGUAGE="JavaScript">
tv=new
Array()
tv[0]="ОРТ"
tv[1]="РТР"
tv[2]="ТВЦ"
tv[3]="НТВ"
tv[4]="TB3"
num=0
function
picktv()
{
now=new Date()
num=(now.getSeconds())%5
}
function
whichtv()
{
picktv()
guess=" "
while (tv[num] !=
guess.toUpperCase())
{guess=prompt("Угадайте мой любимый телеканал:
ОРТ, РТР, ТВЦ, НТВ или TB3?")
if
(guess.toUpperCase() == tv[num])
{alert("Это мой любимый
телеканал!")}
else
{alert("Нет, попробуйте еще
раз.")}}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
<INPUT
TYPE="button" VALUE="Угадайте"
onClick="whichtv()">
</FORM>
</BODY>
</HTML>
Эффект
Разбор скрипта
<SCRIPT
LANGUAGE="JavaScript">
tv=new
Array()
tv[0]="ОРТ"
tv[1]="РТР"
tv[2]="ТВЦ"
tv[3]="НТВ"
tv[4]="TB3"
num=0
tv=new Array() объявляет, что tv представляет собой массив. С пустыми (скобками) массив может быть какой угодно длины. Можно также указать длину массива, например, tv=new Array(5). Помните, что массив array может иметь множество значений. Можно представить себе массив в виде таблицы:
tv
tv[0] | tv[1] | tv[2] | tv[3] | tv[4] |
ОРТ | РТР | ТВЦ | НТВ | TB3 |
Обратите внимание, мы заранее указываем переменную num, у
которой одно значение, равное 0, и массив tv, который имеет 5
значений.
Теперь функция picktv():
function picktv()
{
now=new
Date()
num=(now.getSeconds())%5
}
Функция picktv() наугад выбирает число от 0 до 4, которое становится индексом tv. Помните, от нуля до четырех ПЯТЬ чисел. То есть если num равно 2, то любимый телеканал — tv[2], или ТВЦ. Теперь функции whichtv() и picktv():
function whichtv()
{
picktv()
guess=" "
while
(tv[num] != guess.toUpperCase())
{guess=prompt("Угадайте мой
любимый телеканал:
ОРТ, РТР, ТВЦ, НТВ или
TB3?")
if (guess.toUpperCase() == tv[num])
{alert("Это мой любимый телеканал!")}
else
{alert("Нет, попробуйте еще раз.")}}
}
Команда guess=prompt должна находиться полностью на одной
строке. Вот кое-что новенькое! Видите, первым делом функция вызывает другую
функцию, picktv(). Таким образом, когда бы вы ни нажали на
кнопку, будет выбираться новый телеканал.
Строка while (tv[num] != guess.toUpperCase()). Метод
или действие toUpperCase() (в верхний
регистр) используется для перевода всего, что бы вы ни
напечатали, в верхний регистр.
Программа повторяет цикл While, пока пользователь не угадает
правильный телеканал. Фрагмент с циклом While уже должен казаться вам
вполне знакомым.
Обратите внимание на If и Else. В игре возможны только
два результата: либо вы правы, либо ошибаетесь.
Теперь кнопка, которая все это запускает:
<FORM>
<INPUT TYPE="button" VALUE="Угадай"
onClick="whichtv()">
</FORM>
Тут ничего нового.
Еще кое-что о массивах:
В JavaScript есть несколько встроенных массивов. В массивах можно указывать формы. Можете передать форму командой document.myform или document.forms[0], если это первая форма. Массивы всегда начинаются с нуля. Вторая будет document.forms[1]. Третья document.forms[2] и так далее...
Для рисунков тоже есть готовый массив. Можно указать pic1.gif как document.pic1.src или как document.images[0].src. Просто продолжайте следовать схеме, прибавляя номер в [квадратных скобках].
Более-менее поняли, что такое массивы?
Ваше задание
Напишите программу JavaScript, которая содержит кнопку с надписью: «Щелкните, чтобы попасть на случайный сайт». Когда пользователь нажмет на нее, запустится функция, которая наугад выберет число и сайт из массива внутри команды JavaScript top.location.href = urls[num]. top (вершина) — это свойство объекта window, оно относится к главному окну браузера. location.href, другой объект со свойством, содержит адрес URL.
Возможный ответ здесь