Джо Бернс
Урок 26. Введение в массивы:
функция внутри функции.

Концепция

Сегодня мы пристумим к нашей последней новой теме — массивы (array). Вы уже узнали о переменных. Каждая переменная имеет одно значение, но иногда вам необходим массив (array), или переменная, которая имеет множество значений.
В этом примере программа просит пользователя угадать телевизионный канал из перечня телеканалов. Запрос повторяется до тех пор, пока пользователь не угадает. Каждый раз при нажатии кнопки выбирается новый телеканал.

Скрипт

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
     tv=new Array()
     tv[0]="ОРТ"
     tv[1]="РТР"
     tv[2]="ТВЦ"
     tv[3]="НТВ"
     tv[4]="ТВ6"
     num=0
function picktv()
    {
       now=new Date()
       num=(now.getSeconds())%5
     }
function whichtv()
{
picktv()
guess=" "
while (tv[num] != guess.toUpperCase())

{guess=prompt("Угадайте мой любимый телеканал:
  ОРТ, РТР, ТВЦ, НТВ или ТВ6?")

  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]="ТВ6"
     num=0
  • tv=new Array() объявляет, что tv представляет собой массив. С пустыми (скобками) массив может быть какой угодно длины. Можно также указать длину массива, например, tv=new Array(5).
  • Помните, что массив array может иметь множество значений. Можно представить себе массив в виде таблицы:
tv

tv[0]tv[1]tv[2]tv[3]tv[4]
ОРТРТРТВЦНТВТВ6
  • Обратите внимание, мы заранее указываем переменную num, у которой одно значение, равное 0, и массив tv, который имеет 5 значений.
  • Теперь функция picktv():
function picktv()
   {
       now=new Date()
       num=(now.getSeconds())%5
   }
  • Функция pictv() наугад выбирает число от 0 до 4, которое становится индексом tv. Помните, от нуля до четырех ПЯТЬ чисел. То есть, если num равно 2, то любимый телеканал — tv[2], или ТВЦ.
  • Теперь функции whichtv() и picktv():
function whichtv()
{
picktv()
guess=" "
while (tv[num] != guess.toUpperCase())

{guess=prompt("Угадайте мой любимый телеканал:
  ОРТ, РТР, ТВЦ, НТВ или ТВ6?")

  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.

Назад | Содержание | Вперед

Джо Бернс
Введение
Сообщения об ошибках
Дата и время
Команда onMouseOver
Еще обработчики событий
Запрос пользователю
Концепция свойств
Иерархия объектов
Создание функции
onUnload и onMouseOut
Новые окна
Новые окна (прод.)
Метод confirm
Математ. переменные
Смена картинки
Смена через функцию
Функция внутри формы
Форма и свойство value
Данные в функцию
Случайные числа
Введение в if
If и Else
Случайный выбор
Введение в FOR
Введение в WHILE
Введение в массивы
Слайд-шоу
Анимация
Подтверждение ввода