Рассмотрим пример преобразования обычного правильно построенного 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, извлечем текст, содержащийся в каждом . Разместим этот текст в ссылках и составим из них список....
Что еще можно сделать?