На главную | Отправить SMS | Сделать стартовой | Поставить закладку |
Разделы сайта

 Главная
 Новости
 Регистрация
 Region Free Keys
 Телефония
 Железо
 Software
 Секреты Windows
 Безопасность
 Web-дизайн
 Web-мастерам
 Фото-приколы
 Хостинги
 Раскрутка сайта
 Анекдоты
 Игромания
 Фотогалерея
 Разное
 Знакомства
 Мир техники
 Флейм
 Голосования
 Музыка
 Спорт
 Кино
 Авто
 Зал суда
 Программа TB
 Форум
 Авторам статей
 Реклама на сайте

Рассылка

Реклама



Web-дизайн

| Основы Web-технологий | Введение в Web-дизайн | Первая Web-страница | Графика web-дизайне | Специальные возможности HTML | Каскадные таблицы стилей | Полезные приемы в Web-дизайне | Обслуживание Web-сайта | Программирование на JavaScript и VBScript | Раскрутка сайта | Деньги и интернет | Партнерские программы | Web-софт | Поисковая оптимизация | Хостинг |

Создание функций с неограниченным количеством элементов

Автор: Алексей Голубев
Сайт: http://www.frnet.narod.ru/

Зачастую бывает необходимо создавать такие функции, количество аргументов которых неопределено. Примером такой функции может послужить создание функции, выводящей на экран браузера меню, при перемножении, сложении неопределенного количества чисел, случай, когда в качестве аргументов функции выступают элементы массива и т.д. и т.п. В качестве примера мы рассмотри функцию, которая будет выводить на экран список ссылок.

1. Интерфейс функции.

Для применения функции нужно ввести следующий фрагмент:

<SCRIPT language=JavaScript>
menu(
"Раздел1", "item1.htm",
...
"Разделn", "itemn.htm"
);
</SCRIPT>

То есть, мы записывает в аргументах функции название разделов и ссылки им соответствующие (в нужном количестве, конечно), а функция строит на экране нужный список.

2. Сама функция.

Сама функция должана:
А) получать количество аргументов;
Б) выполняться при количестве аргументов больше 1;
В) выводить на экран меню.
Рассмотрим все по порядку.

А) Получение количества аргументов.

Получение количества аргументов можно организовать одной строкой следующего вида: var x = имя_функции.arguments.length;
В нашем случает (так как мы назвали функцию menu) строка будет выглядеть следующим образом:

var x = menu.arguments.length;
При выполнении данной строки количество элементов функции menu будет заноситься в переменную x.

Б) Условие выполнения функции.

Если у нас количество аргументов будет равно 1 (или 0), то функция будет выполняться с ошибками, поэтому главную часть функции нужно заключить в оператор условия if следующим образом:

if (x > 1)
{
//какие-то действия
}

В) Какие-то действия.

Что надо еще определить - это четно ли число аргументов, если нет, то мы отбрасываем последний аргумент:

if(x%2) x--;
Мы будет выводить маркированный список, поэтому должны в первую очередь записать открывающий список тег (для красоты сделаем маркеры квадратными):

document.write("<ul type=square>");
Теперь можно приступать к непосредственному выводу элементов списка. Делать мы это будем естественно при помощи цикла:

for(var i=0; i<x; i+=2)
document.write("<LI><A href="+menu.arguments[i+1]+">" + menu.arguments[i]+"</A>");

Свойство arguments объекта menu является массивом, поэтому обращаться с ним мы будем соответственно.

И в заключении записываем закрывающий список тег:

document.write("</ul>");
В итоге мы получили следующую функцию:

function menu()
{
// число аргументов функции
var x = menu.arguments.length;
// Функция работает, если число аргументов больше одного
if (x > 1)
{
// Если число аргументов нечетно,
//последний аргумент игнорируем
if(x%2) x--;

// Строим начальный тег списка
document.write("<UL type=disc>");

// Построение списка
for(var i=0; i<x; i+=2)>br>document.write("<LI><A href="+menu.arguments[i+1]+">"+
menu.arguments[i]+"</A>");

// Строим конечный тег списка
document.write("</UL>");
}
}

Вот все. Вы можете таким образом выводить списки и другого вида (при помощи тега select, с использованием стилей и т.п.). Если возникли вопросы и есть предложения по улучшению функции пишите.

P.S. Вы можете cкачать этот пример со страницы: http://www.frnet.narod.ru/script.html.
Или задать вопрос автору и ведущему раздела alexey-golubev@mail.ru

Содержание

Обсудить в форуме...>>>>

 

Каталог

Реклама


Rambler's Top100 Rambler's Top100

© 2002-2012, DIWAXX.RU. Дизайн Freeline Studio. Хостинг http://www.mtw.ru. Вопросы, пожелания, предложения: admin@diwaxx.ru