В предыдущем выпуске мы рассмотрели формирование кода класса 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;
Эти два класса (дерева и стека) мы потом с успехом можем использовать в
других примерах, например для создания "выпадающих меню" с многоуровневой
структурой.
Файл меню
Теперь надо продумать структуру файла, в котором будет содержаться
информационная часть нашего меню. Самое главное, сконструировать файл
так, чтобы в нем наглядно читалась структура меню и были хорошо видны
все починенные и родительские уровни. Это позволит легко его редактировать,
и при этом избежать мучительного поиска возможных ошибок. Рассмотрим такой
пример:
Файл использует массив из тестовых строк, разделенных вертикальной чертой.
Каждая строка - это отдельный пункт меню. Для того, чтобы было удобно
создавать такое меню, для указания уровня каждого из пунктов используются
символы табуляции. Чем больше табуляторов стоит в начале строки - тем глубже
уровень текущего пункта. Родительские и дочерние уровни дерева программа будет
определять автоматически, ориентируясь по числу табуляторов в начале строки.
Если табуляторов в начале строки нет - это корневые ветви, которые всегда
отображается в меню.
После табулятора следует текст меню. По необходимости, через разделитель
"вертикальная черта", указывается адрес гиперссылки, и снова через
разделитель - пояснение (атрибут гиперссылки - "title").
Последние два элемента являются необязательными. Просто и наглядно.
Прошу обратить Ваше внимание на два момента. Первое - после каждой текстовой
строки массива меню надо ставить запятую. Второе - после последней строки
запятая не ставится.
Продолжение в следующем выпуске...
Eсли Вы ищете качественный и недорогой web-хостинг, лично я рекомендую
PeterHost.Ru.
Российский (поддержим наших!), прекрасные каналы, сервис "на уровне".