- •Динамические веб-страницы на основе JavaScript
- •Основные понятия
- •Объекты в JavaScript
- •Событие в браузере и обработчик события
- •События, генерируемые html-элементами
- •Изменение свойств элемента
- •Обозначение html-элемента с помощью идентификатора
- •Доступ к свойствам html-элемента
- •Скрытие и показ элемента
- •Несколько событий в одном элементе
- •3. Изменение атрибутов элемента
- •Изменение самого себя
- •Изменение размера элемента (атрибуты width и height)
- •Сдвиг картинки
- •1. Разместите на странице картинку и кнопку “в центр”, которая должна перемещать картинку примерно в центр экрана. 2. Добавьте кнопку “Обратно”, которая должна возвращать картинку на место.
- •4. Переменная и функция
- •Имена переменных
- •Оператор присваивания
- •Изменение размера элемента относительно прежнего размера
- •Понятие функции
- •5. Окна браузеров: объект window
- •6. Практическое занятие по использованию объектов document и window
- •7. Условный оператор if
- •8. Вторая форма оператора if
- •9. Объект Date
- •10. Оператор цикла for
- •11. Математические вычисления в JavaScript
- •12. Массивы
- •13. Инструменты Dreamweaver для JavaScript
- •14. Объектная модель документа
- •15. Практическое занятие: демонстрация шахматной партии
12. Массивы
Массив в языках программирования — это упорядоченный набор однотипных элементов. Без массива не обойтись, когда нужно обрабатывать большой объём структурированной информации. Например, каждый день проводят метеорологические наблюдения и замеряют температуру, влажность воздуха и атмосферное давление. В течение года эти данные заносят в компьютер, чтобы затем их обрабатывать, например, строить графики. Эти данные имеют чёткую структуру, так как каждый день проводятся одни и те же измерения. Таким образом получается таблица из 365 строк и 3 столбцов.
Другой пример упорядоченной информации: месяцы года. Они следуют друг за другом в строгом порядке, поэтому они имеют свои номера: январь — 1, февраль — 2 и так далее. Для машинной обработки месяцев удобны числовые обозначения, а для отображения на экране — словесные. Поэтому часто названия месяцев сохраняют в массиве.
Доступ к элементу массива производится по его номеру. Обозначается i-й элемент массива a как a[i]. Элементы массива нумеруются с нуля, т. е. массив a, состоящий из N элементов, содержит элементы a[0], a[1], …, a[N-1]. Для наглядности массив удобно представить в виде таблицы:
0 |
1 |
2 |
... |
N-1 |
значение1 |
значение2 |
значение3 |
... |
значениеN |
Массив создаётся в два этапа. В начале создаётся пустой массив с помощью объекта Array (англ. матрица, решётка), а затем он заполняется значениями. Пример:
<script> сезон = new Array(); // пустой массив “сезон” сезон[0]='зима'; // заполнение массива сезон[1]='весна'; сезон[2]='лето'; сезон[3]='осень'; document.write(сезон[0] + ', ' + сезон[1] + ', ' + сезон[2]+ ', ' + сезон[3]); </script>
Код в действии зима, весна, лето, осень
Задание 1
Создайте массив «месяцы» и заполните его названиями месяцев. Выведите на страницу только месяцы летних каникул.
Переменная-счётчик
В программировании часто требуется подсчитать сколько раз происходит какое-нибудь событие. Для создания счётчика таких событий делают следующее:
создаётся переменная-счётчик, имя выбирается произвольно;
переменная инициализируется, то есть присваивается начальное значение;
при каждом событии счётчик увеличивается на единицу.
В примере ниже создаётся и инициализируется переменная number. При каждом нажатии на кнопку вызывается функция counter, которая увеличивает на единицу счётчик и выводит его значение в текстовое поле.
<script type="text/javascript"> var number; number = 0; function counter(){ number = number + 1; document.getElementById('output').value = number; } </script> <input type="button" value="Нажимайте" onClick="counter()"> Количество нажатий: <input id="output" type="text" size="5">
Код в действии
Количество
нажатий:
Такой счётчик удобно использовать для перебора элементов массива.
Задание 2
Разместите на странице кнопку «Показать следующий элемент» и текстовое поле ввода.
По каждому щелчку на кнопке должен выводиться очередной элемент массива «месяцы».
Внешний вид
Иногда при достижении определённого значения счётчика (порога) требуется совершить какое-то действие. Это делают следующим образом. При каждом увеличении счётчика сравнивается его значение с заданным порогом. Если он достиг его, то выполняется нужное действие. Ниже показана функция counter из предыдущего примера, в которой добавлена проверка достижения первого десятка нажатий. При этом событии выводится окно сообщения.
function counter(){ number = number + 1; document.getElementById('output').value = number; if(number == 10){ window.alert('Десяток!'); } }
Код в действии
Количество нажатий:
Такую проверку удобно использовать для обнаружения конца массива. Дело в том, что при использовании массивов программисту приходится следить, чтобы номер элемента массива не превышал максимального номера. Например, в массиве «сезон» всего 4 элемента и последний имеет номер 3. Если мы обратимся к пятому элементу, то получим значение undefined (англ. неопределённый).
Задание 3
Доработайте скрипт из предыдущего задания так, чтобы при достижении последнего элемента массива «месяцы» последующие щелчки выводили слово «Конец».
Массивы часто используются для того, чтобы упорядочить, пронумеровать данные. Дело в том, что вычислительная машина хорошо «понимает» числа, а человек — слова. Так, в примере ниже дни недели занесены в массив, чтобы по номеру дня вызывать его название и отображать на экране. Номер дня получают с помощью метода getDay объекта Date.
<script> день = new Array; день[0]='воскресенье'; день[1]='понедельник'; день[2]='вторник'; день[3]='среда'; день[4]='четверг'; день[5]='пятница'; день[6]='суббота'; сейчас = new Date(); document.write('Сегодня ' + день[сейчас.getDay()]); </script>
Код в действии Сегодня четверг
Задание 4
Доработайте скрипт из предыдущего задания так, чтобы месяц отображался не числом, а своим названием в родительном падеже.
Задание 5
Скопируйте на свою страницу приведённый ниже код игрушки «Угадай телеканал», проверьте её работу. Проанализируйте код и измените названия телеканалов на те, которые вы знаете.
Пример кода
<SCRIPT> телеканал=new Array(); телеканал[0]="ОРТ"; телеканал[1]="РТР"; телеканал[2]="ТВЦ"; телеканал[3]="НТВ"; телеканал[4]="ТВ6"; случай=0; function picktv(){ дата=new Date() случай=(дата.getSeconds())%5 } function whichtv(){ picktv(); предположение=" "; while (телеканал[случай] != предположение.toUpperCase()){ предположение=prompt("Угадайте мой любимый телеканал: ОРТ, РТР, ТВЦ, НТВ или ТВ6?"); if (предположение.toUpperCase() == телеканал[случай]){ alert("Это мой любимый телеканал!") }else{ alert("Нет, попробуйте ещё раз.") } } } </SCRIPT> <INPUT TYPE="button" VALUE="Угадайте" onclick="whichtv()">
