Рассмотрим пример преобразования обычного правильно построенного XHTML документа в презентацию, состоящую из отдельных слайдов.
Браузеры с отключенным JavaScript просто покажут всю страницу полностью. Зато браузеры, с включенным JavaScript и поддерживающие DOM представят этот документ в виде отдельных слайдов с:
Для реализации нашего слайд-шоу разобьем документ на логически законченные блоки и заключим каждый в
.
Каждый слайд будем начинать с заголовка, заключенного в теги
. Из них соберем оглавление....
Остальной XHTML-код в пределах слайда может быть произвольным, включая изображения, таблицы и т.п.
XHTML-код документа должен получиться таким:
......Заголовок слайда 1
... произвольный XHTML-код 1-го слайда...Заголовок слайда n
... произвольный XHTML-код n-го слайда
Зная, что каждый слайд заключен в
, а заголовки заключены в теги
, мы сможем:...
...
и подсчитаем их количество....
для генерации оглавленияvar divs = document.getElementsByTagName("div");
Массив Теперь, зная длину массива со слайдами мы знаем количество слайдов в документе и можем обратиться к любому из них. Напишем функцию С помощью этой функции создадим элемент Напишем функцию Функция будет возвращать ссылку вида В функции Как было сказано ранее, оглавление соберем из заголовков Переберем все дочерние элементы В массив ... и выберем самый первый из них. Его текст будем использовать в оглавлении. Функции В этой функции помимо оглавления создадим еще две ссылки: открыть и закрыть меню. Переберем массив Можно взять архив с этим примером и исследовать JavaScript, в котором очень подробно описаны все действия по созданию элементов навигации. Можно попытаться оптимизировать код JavaScript или добавить что-то новое. Можно задать любой вопрос по работе этого примера или оставить комментарий.divs
содержит все элементы div
из документа. Переберем его и выберем только
for (var i=0; i < divs.length; i++) {
if (divs[i].className == ‘slide’) {
slides.push(divs[i]);
}
}
Как сделать панель навигации?
createNavBar(mSlide,allSlides)
, которой в качестве аргументов будем передавать отображаемый в настоящее время слайд и общее количество слайдов....
, в котором разместим номер отображаемого слайда, общее количество слайдов и ссылки «вперед-назад».Как сделать ссылки?
createLnk(lnkId, lnkTxt)
, которой в качестве аргументов будем передавать id cоздаваемой ссылки и текст для нее.текст ссылки
.Куда пойдем по ссылкам?
linkClick(evt)
определяем какая из созданных нами ссылок была нажата и затем либо переключаем слайды, либо показываем или убираем оглавление слайдов.
....
Как выбрать заголовки?
for (var h=0; h
headsTmp
поместим все элементы
, которые нам встретятся: ...
if (mySlide.childNodes[h].tagName == 'H2') {
// в массив заголовков кладем первый h2 для каждого слайда
heads[s] = mySlide.childNodes[h];
heads[s].id = 'heads'+s;
break;
}
Как сделать оглавление?
createTableContent(mHead)
передадим в качестве аргумента массив heads
, состоящий из заголовков слайдов.heads
, извлечем текст, содержащийся в каждом
. Разместим этот текст в ссылках и составим из них список....
Что еще можно сделать?