Web - кодинг: JavaScript:
JavaScript полезные функции (часть IV)
Автор: Мельников Михаил
Источник:
Сегодня мы разберемся с тем, как организовать на
страничке локальную баннерную систему, пользуясь только средствами
JavaScript. Данная функция, кстати, может быть полезна и программистам на
ASP.
Для чего это нужно?
Механизм баннеров позволяет
оживить страничку и зрительно создать впечатление, что сайт все время
меняется. Наиболее полезна эта функция будет для контент-сайтов - очень
удобно создавать баннеры для конкретных статей и размещать их в локальной
баннерной системе. Лучше всего, конечно, механизм прокрутки баннеров
организовать на стороне сервера с применением Perl, PHP или ASP, но не у
всех, к сожалению, есть доступ к CGI-скриптам. И, в этом случае, для
решения задачи мы можем воспользоваться встроенными скриптовыми
языками. Несмотря на то, что я буду объяснять как написать небольшую
баннерную систему с использованием JavaScript, изложенные принципы вполне
применимы и для любых других языков.
Условия задачи и
ограничения
А теперь, давайте, более подробно сформулируем
условия задачи и введем ряд ограничений, которые упростят
программирование. Баннерная система должна выполнять следующие
функции:
где-то хранить базу данных о баннерах
случайно выбирать, из вышеупомянутой базы, несколько неповторяющихся
баннеров
обеспечивать механизмы отображения баннеров и перехода на нужную
страничку при нажатии
Накладываем на эти условия некоторые
ограничения:
баннеры будут фиксированного размера, и храниться в формате GIF или
JPEG
на страничке мы будем одновременно показывать четыре
баннера
Ну вот, условия и ограничения определены. Теперь,
давайте, более подробно рассмотрим, каким образом лучше всего хранить
баннеры. В качестве базы для хранения параметров баннеров мы воспользуемся
обычным массивом. О каждом из баннеров нам будет необходимо хранить
следующую информацию:
имя файла
альтернативный текст
адрес странички, на которую ссылается баннер
Для удобства
хранения и обновления базы баннеров, лучше всего выделить ее описание в
отдельный файл и подключить при помощи механизма вставки внешнего
js-файла. Это делается в секции заголовка при помощи следующей
конструкции:
<script language="JavaScript"
src="banners.js"></script>
А вот так, будет выглядеть
содержимое файла banners.js
var banners = new
Array( "pic-01.gif", "Text #1", ";, "pic-02.gif",
"Text #2", ";, "pic-03.gif",
"Text #3", ";, "pic-04.gif",
"Text #4", ";, "pic-05.gif",
"Text #5", ";, "pic-06.gif",
"Text #6", ";, "pic-07.gif",
"Text #7", ";, "pic-08.gif",
"Text #8", ";, "pic-09.gif",
"Text #9", ";, "pic-10.gif",
"Text #10", "; )
Как видите,
структура массива не очень сложна. Под каждый баннер отводится три
последовательные ячейки, в которых и хранятся: имя файла, альтернативный
текст, адрес ссылки.
Программная часть
Вот мы и
добрались до программирования. И, сначала, разберемся с некоторыми
моментами. Начнем с генерации неповторяющихся баннеров. Для выбора
произвольного баннера, нам необходимо сгенерировать случайное число в
диапазоне от нуля до числа баннеров минус один. Это несложно и делается
следующим фрагментом кода:
n =
Math.floor(Math.random()*(banners.length/3));
Но, как я уже
упоминал раньше, мы договорились, что одновременно на страничке будут
показываться четыре баннера. И, следовательно, после каждой генерации
случайного числа нам необходимо проверить, что данный баннер не совпадает
с 3-мя другими. К тому же нам нужно где-то хранить уже сгенерированные
числа. Для решения этих задач, мы организуем еще один массив - случайных
чисел и при каждой генерации нового числа будем сопоставлять его с
найденными ранее. Полный код, который решает эти проблемы, приведен
ниже:
var i, j; var flag; // Флажок, используемый для
проверки совпадения var banners_show = 4; // Число показываемых на
страничке баннеров
var rand = new Array(banners_show-1);
for
(i=0; i<banners_show; i++) { do
{ flag=0; n
=
Math.floor(Math.random()*(banners.length/3)); for
(j=0; j<i; j++)
{ if
(n == rand[j])
{ flag=1; } } }
while (flag); rand[i] =
n; }
Ввиду того, что баннеры будут генерироваться на лету, в
процессе загрузки страницы, вышеприведенный фрагмент кода необходимо
разместить вне функции. В момент, когда броузер перейдет к отрисовке
странички, мы уже будем иметь готовый массив случайных чисел.
Для
отрисовки баннеров, мы напишем простую функцию, и будем передавать ей в
качестве параметра порядковый номер баннера на страничке. Используя этот
номер, мы читаем из массива rand[] случайное число для конкретного баннера
и уже используя его, находим все необходимые для отрисовки
данные:
function Show_Banner(number)
{
n=rand[number-1];
document.write('<a href="' +
banners[n*3+2] + '"><img src="banners/' + banners[n*3] + '"' +
'border=0 width=' + banner_width + ' height=' + banner_height + ' alt="' +
banners[n*3+1] + '"></a>');
}
Вот, практически
и все, наша локальная баннерная система готова. Осталось только четыре
раза вызвать функцию Show_Banner() из подходящей части странички. Нужно,
только не забыть, что код JavaScript отделяется от html тегами
<script></script>:
<script> <!-- Show_Banner(1);
//--> </script>
.......
<script> <!--
Show_Banner(4); //--> </script>
Для
проверки работоспособности локальной баннерной системы, несколько раз
нажмите в броузере кнопку Reload и убедитесь, что каждый раз генерируются
разные и не совпадающие друг с другом баннеры.
Назад | Вперёд
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|