Самый простой способ объяснить, что я пытаюсь сделать, - подумать об этом как о старте и увидеть содержимое, отображаемое в нужной области. Пользователь нажимает на следующую кнопку и заменяет предыдущий контент следующим контентом. Это происходит так же, как визуальный роман, но на самом деле?
Единственная проблема заключается в том, что я не могу найти лучший способ заставить его удалить предыдущий контент и добавить следующий контент.
Я надеюсь сделать это с помощью JavaScript или других производных, так как я знаком с ним, но я бы хотел работать с любым веб-интегрированным языком.
Язык вашей клиентской стороны для изменения текущей страницы будет javascript. Других вариантов перекрестного браузера нет, если вы собираетесь менять клиентскую страницу страницы, не загружая при этом всю новую страницу с сервера.
Вот некоторые из возможностей с javascript:
Имейте все содержимое, присутствующее на исходной странице, и просто скройте/покажите блоки содержимого при нажатии каждой последовательной кнопки.
Загрузите динамический контент с вашего сервера с помощью ajax и удалите старый контент, поскольку новый контент загружается Ajax и вставлен на страницу.
Используйте iframe и программно измените свойство .src
на iframe для последовательной загрузки нового содержимого.
Вариант 1 является самым простым, если на главной странице не слишком много контента. Блоки содержимого можно легко скрыть, установив obj.style.display = "none"
или показан с обратным obj.style.display = "block"
.
Вариант 2 немного более активен, так как вам нужно сделать AJAX-вызовы на ваш сервер для загрузки желаемого контента, а затем его необходимо вставить на страницу по мере удаления старого содержимого. С библиотекой, подобной jQuery, это немного легче для менее опытного программиста.
Вариант 3 также довольно прост в использовании, но не такой гибкий, поскольку iframe автоматически не соответствует высоте вашего контента, как это делает <div>
, но у них есть то преимущество, что каждый последующий контент может быть просто мини-HTML-страницей на вашем сервере.
Здесь приведен рабочий пример варианта 1, где содержимое скрыто/показано с помощью простого javascript:
http://jsfiddle.net/jfriend00/6ZFUq/
В этом примере используются некоторые правила CSS, которые вызывают имя класса, а затем добавляется или удаляется имя класса из блока содержимого, чтобы этот блок отображался или скрывался.
HTML:
<button id="next">Next</button><br><br>
<div class="content active">Content 1</div>
<div class="content">Content 2</div>
<div class="content">Content 3</div>
<div class="content">Content 4</div>
<div class="content">Content 5</div>
CSS:
/* hide all content blocks by default */
.content {
display: none;
}
.active {
display: block;
}
Javascript (расположен непосредственно перед </body>
):
// utility functions
function removeClass(elem, cls) {
var str = " " + elem.className + " ";
elem.className = str.replace(" " + cls + " ", " ").replace(/^\s+|\s+$/g, "");
}
function addClass(elem, cls) {
elem.className += (" " + cls);
}
// install event handler on Next button
document.getElementById("next").addEventListener("click", function() {
// get active page
var active = document.querySelectorAll(".content.active")[0];
var all = document.querySelectorAll(".content");
// find the active one in the list
var activeIndex;
for (var i = 0; i < all.length; i++) {
if (all[i] === active) {
activeIndex = i;
break;
}
}
// show the next one (wrapping back around if necessary)
var nextItem = all[(activeIndex + 1) % all.length];
addClass(nextItem, "active");
// hide the previous one
removeClass(active, "active");
});
Чтобы показать вам преимущества использования библиотеки, такой как jQuery, здесь используются те же функции в jQuery:
http://jsfiddle.net/jfriend00/ts8Bz/
// install event handler on Next button
$("#next").click(function() {
var next = $(".content.active").removeClass("active").next();
if (next.length) {
next.addClass("active");
} else {
$(".content").eq(0).addClass("active");
}
});
pagination
. Ищите его в Google, и вы найдете много решений.