Опубликован: 19.10.2006 | Уровень: для всех | Доступ: платный
Лекция 27:

Массивы

< Лекция 26 || Лекция 27: 12 || Лекция 28 >

Разбор сценария

<SCRIPT type="text/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).

Помните, что массив может иметь множество значений. Можно представить себе массив в виде таблицы:

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
     }

Функция picktv() случайно выбирает число от 0 до 4, которое становится индексом tv. Помните, от нуля до четырех ПЯТЬ чисел. То есть если num равно 2, то любимый телеканал — tv[2], или ТВЦ.

Теперь функция whichtv():

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 = url[num]. top (вершина) — это свойство объекта window, оно относится к главному окну браузера. location.href, другой объект и свойство, содержит адрес URL.

Возможное решение

Это задание очень напоминает пример из этого урока, за исключением того, что нужно указать ряд адресов URL по схеме url[0]. Однако в результате сценарий должен отправить пользователя на выбранную страницу.

<html>
<head>
<script language="JavaScript">
     url=new Array()
     url[0]="http://www.jsp.newmail.ru/les5.htm"
     url[1]="http://www.jsp.newmail.ru/les10.htm"
     url[2]="http://www.jsp.newmail.ru/les15.htm"
     url[3]="http://www.jsp.newmail.ru/les20.htm"

function rand()
   {
     now=new Date()
     num=(now.getSeconds())%4
     top.location.href = url[num]
   }
</script>    
</head>
<body>
<center>
    <h2>Случайный URL</h2>
    <form>
        <input type="button" value="Случайное блуждание по сайтам!" onClick="rand()">
    </form>
</center>
</body>
</html>
< Лекция 26 || Лекция 27: 12 || Лекция 28 >
Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?

Эдуард Семынин
Эдуард Семынин

Здравствуйте.

Перестали быть видны лекции и тесты практикума по программированию на JavaScript. Уже второй день из моего аккаунта виден лишь план занятий. В чем может быть проблема?