Отправляет email-рассылки с помощью сервиса Sendsay

Программирование на JavaScript

  Все выпуски  

Азы и секреты программирования на JavaScript.


Информационный Канал Subscribe.Ru


Азы и секреты программирования на JavaScript N 23

Ссылка на архив предыдущих выпусков: http://subscribe.ru/
Статистика рассылки: http://subscribe.ru/

Класс стека

В предыдущем выпуске мы рассмотрели формирование кода класса Tree для создания древовидного меню. Нам еще понадобится специально созданный класс для использования стека.

/*
Конструктор класса стека
Файл stack.js
*/
function Stack(){this.A = new Array();}
// Значение последнего эемента массива:
function Stack_top(){return this.A[this.A.length - 1];}
// Длина массива не нулевая:
function Stack_IsEmpty(){return this.A.length == 0;}
// Вытолкнуть элемент из стека:
function Stack_Pop(){
  var N=this.A.length-1;
  var X=this.A[N];
  this.A.length=N;
  return X;
}
// Занести в стек по-очереди все переданные аргументы
function stk_push(){
  for(var i=0;i<stk_push.arguments.length;i++)
   this.A[this.A.length]=stk_push.arguments[i];
}
Stack.prototype.top = Stack_top;
Stack.prototype.isEmpty = Stack_IsEmpty;
Stack.prototype.pop = Stack_Pop;
Stack.prototype.push = stk_push;

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

Файл меню

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

// Файл меню "mnu.js"
// ------------------------------
// формат: (табуляторы) текст | гиперссылка | пояснение

var myHTMLmnu = new Array (
"Уровень_0_строка_1 | Адрес_сылки | Описание",
" Уровень_1_строка_1_1 | Адрес_сылки | Описание",
"Уровень_0_строка_2 | Адрес_сылки | Описание",
"Уровень_0_строка_3 | Адрес_сылки | Описание",
 "Уровень_1_строка_3_1 | Адрес_сылки | Описание",
 "Уровень_1_строка_3_2 | Адрес_сылки | Описание",
  "Уровень_2_строка_3_2_1 | Адрес_сылки | Описание",
  "Уровень_2_строка_3_2_2 | Адрес_сылки | Описание",
"Уровень_0_строка_4 | Адрес_сылки | Описание"
);

Файл использует массив из тестовых строк, разделенных вертикальной чертой. Каждая строка - это отдельный пункт меню. Для того, чтобы было удобно создавать такое меню, для указания уровня каждого из пунктов используются символы табуляции. Чем больше табуляторов стоит в начале строки - тем глубже уровень текущего пункта. Родительские и дочерние уровни дерева программа будет определять автоматически, ориентируясь по числу табуляторов в начале строки. Если табуляторов в начале строки нет - это корневые ветви, которые всегда отображается в меню.

После табулятора следует текст меню. По необходимости, через разделитель "вертикальная черта", указывается адрес гиперссылки, и снова через разделитель - пояснение (атрибут гиперссылки - "title"). Последние два элемента являются необязательными. Просто и наглядно.

Прошу обратить Ваше внимание на два момента. Первое - после каждой текстовой строки массива меню надо ставить запятую. Второе - после последней строки запятая не ставится.

Продолжение в следующем выпуске...


Eсли Вы ищете качественный и недорогой web-хостинг, лично я рекомендую PeterHost.Ru. Российский (поддержим наших!), прекрасные каналы, сервис "на уровне".

Автор и ведущий рассылки И. Балезин
Лучший хостинг в Рунете

InterReklama Advertizing
Интерреклама. Интернет

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное