Зачастую бывает необходимо создавать такие функции, количество аргументов которых неопределено. Примером такой функции может послужить создание функции, выводящей на экран браузера меню, при перемножении, сложении неопределенного количества чисел, случай, когда в качестве аргументов функции выступают элементы массива и т.д. и т.п. В качестве примера мы рассмотри функцию, которая будет выводить на экран список ссылок.
alt
1. Рнтерфейс функции.
alt
Для применения функции нужно ввести следующий фрагмент:
alt
<SCRIPT language=javascript>
menu (
«Р Р°Р·РґРµР»1», «item1.htm»,
...
«Р Р°Р·РґРµР»n», "itemn.htm
« );
</SCRIPT>
alt
То есть, мы записывает в аргументах функции название разделов и ссылки им соответствующие (в нужном количестве, конечно), а функция строит на экране нужный список.
alt
2. Сама функция.
alt
Сама функция должана:
А) получать количество аргументов;
Р‘) выполняться РїСЂРё количестве аргументов больС?Рµ 1;
В) выводить на экран меню.
Рассмотрим все по порядку.
alt
А) Получение количества аргументов.
alt
Получение количества аргументов можно организовать одной строкой следующего вида: var x = имя_функции.arguments.length; alt
Р’ РЅР°С?ем случает (так как РјС‹ назвали функцию menu) строка будет выглядеть следующим образом:
alt
var x = menu.arguments.length; alt
При выполнении данной строки количество элементов функции menu будет заноситься в переменную x.
alt
Б) Условие выполнения функции.
alt
Если Сѓ нас количество аргументов будет равно 1 (или 0), то функция будет выполняться СЃ РѕС?ибками, поэтому главную часть функции РЅСѓР¶РЅРѕ заключить РІ оператор условия if следующим образом:
alt
if (x > 1)
{
//какие-то действия
}
alt
В) Какие-то действия.
alt
Что надо еще определить — это четно ли число аргументов, если нет, то РјС‹ отбрасываем последний аргумент:
alt
if (x%2) x--; alt
Мы будет выводить маркированный список, поэтому должны в первую очередь записать открывающий список тег (для красоты сделаем маркеры квадратными):
alt
document.write („<ul type=square>“); alt
Теперь можно приступать к непосредственному выводу элементов списка. Делать мы это будем естественно при помощи цикла:
alt
for (var i=0; i<x; i+=2)
document.write („<LI&
gt;<A href=“+menu.arguments[i+1]+»>" + menu.arguments[i]+"</A>");
alt
Свойство arguments объекта menu является массивом, поэтому обращаться с ним мы будем соответственно.
alt
Рв заключении записываем закрывающий список тег:
alt
document.write («</ul>»); alt
В итоге мы получили следующую функцию:
alt
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>»);
}
} alt
Р’РѕС‚ РІСЃРµ. Р’С‹ можете таким образом выводить СЃРїРёСЃРєРё Рё РґСЂСѓРіРѕРіРѕ РІРёРґР° (РїСЂРё помощи тега select, СЃ использованием стилей Рё С‚.Рї.). Если возникли РІРѕРїСЂРѕСЃС‹ Рё есть предложения РїРѕ улучС?ению функции РїРёС?ите.

Реклама: