UIC Руководства Архив Книжная полка Халява Сайтосмотр Дизайн "Бурзилка" Пишите

Структура сайта
Главная
UIC
Сервисы
Студенту ВМК
Руководства
Документация
(описания, учебники)
Выбор компьютера
Архив программ
Книжная полка
Халява
Диски
Коврики и т.д.
Вещевая
Сайтосмотр
Нижегородские сайты
Интересные ссылки
Web - дизайн
Обзор околокомпьютерных
рассылок Subscribe.ru
Журнал "Бурзилка"

Пишите письма

Web-дизайн. Статьи.

Mike Melnikov (cherry-design@mail.ru)
Web-studio "Cherry-Design"

  1. Как создать привлекательный web-сайт
  2. Аппаратная конфигурация компьютера
  3. Программы, используемые в web-мастеринге
  4. Информация - вот основа Internet!
  5. Что такое стильный web-сайт?
  6. Рисунок сотен слов дороже нам
  7. Оптимизация изображений в формате JPG
  8. Оптимизация изображений в формате GIF
  9. Броузеры, которые мы выбираем
  10. Интерактивность! Что? И как?
  11. Зачем нам нужен SSI?
  12. Слуга двух господ (часть I)
  13. Слуга двух господ (часть II)
  14. Слуга двух господ (часть III)
  15. Слуга двух господ (часть IV)
  16. Слуга двух господ (часть V)
  17. Как оформить таблицу?
  18. Как правильно регистрировать сайт?
  19. Бойцы невидимого фронта
  20. Немного слов о кодировках
  21. Как работает формат JPEG?
  22. JavaScript и объектная модель
  23. JavaScript: полезные функции (часть I)
  24. JavaScript: полезные функции (часть II)
  25. JavaScript: полезные функции (часть III)
  26. Сага о фреймах
  27. JavaScript: полезные функции (часть IV)
  28. С чего начинается сайт?
  29. JavaScript: полезные функции (часть V)
  30. JavaScript: полезные функции (часть VI)
  31. История про CSS (часть I)

JavaScript: полезные функции (часть IV)

Mike Melnikov (cherry-design@mail.ru)
Web-studio "Cherry-Design"

Сегодня мы разберемся с тем, как организовать на страничке локальную баннерную систему, пользуясь только средствами 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", "http://www.link1.com/",
    "pic-02.gif", "Text #2", "http://www.link2.com/",
    "pic-03.gif", "Text #3", "http://www.link3.com/",
    "pic-04.gif", "Text #4", "http://www.link4.com/",
    "pic-05.gif", "Text #5", "http://www.link5.com/",
    "pic-06.gif", "Text #6", "http://www.link6.com/",
    "pic-07.gif", "Text #7", "http://www.link7.com/",
    "pic-08.gif", "Text #8", "http://www.link8.com/",
    "pic-09.gif", "Text #9", "http://www.link9.com/",
    "pic-10.gif", "Text #10", "http://www.link10.com/"
)

Как видите, структура массива не очень сложна. Под каждый баннер отводится три последовательные ячейки, в которых и хранятся: имя файла, альтернативный текст, адрес ссылки.

Программная часть

Вот мы и добрались до программирования. И, сначала, разберемся с некоторыми моментами.

Начнем с генерации неповторяющихся баннеров. Для выбора произвольного баннера, нам необходимо сгенерировать случайное число в диапазоне от нуля до числа баннеров минус один. Это несложно и делается следующим фрагментом кода:

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 и убедитесь, что каждый раз генерируются разные и не совпадающие друг с другом баннеры.

Архив с примером скрипта, рассмотренного в данной статье, можно взять отсюда.

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

 

UIC Руководства Архив Книжная полка Халява Сайтосмотр Дизайн "Бурзилка" Пишите