Прежде чем ответить на ваш вопрос, я должен сказать, что это очень плохая практика, вы можете использовать jQuery и jQuery Slider Plugin, это будет более эффективно.
Выполнение чего-то более сложного с iframe, но вы можете это сделать.Вы должны использовать IFrame OnLoad событие для изменения текущего индекса страницы (я),
вот как вы можете сделать,
<script type="text/javascript">
var pages=new Array();
pages[0]="/budget.html";
pages[1]="/voluntary.html";
pages[2]="/robust.html";
var i=0;
var time=4000; // this is set in milliseconds
var timer = false;
var timerSetter;
function pageChange() {
document.getElementById("agencyframe").src=pages[i];
i++;
if(i==pages.length) {
i=0;
}
timerSetter = setTimeout("pageChange()",time);
}
function contentChanged(e) {
if (!timer) { pageChange(); timer=true;}
if (timerSetter) {
clearTimeout(timerSetter);
timerSetter = setTimeout("pageChange()",time);
}
var newSrc = e.contentWindow.location.href;
for (var j=0; j < pages.length; j++) {
if (newSrc.match(pages[j])) {
i = j+1;
if(i==pages.length) {
i=0;
}
}
}
}
</script>
И не забудьте установить OnLoad атрибут для фрейма,
<iframe id="agencyframe" onload="contentChanged(this)" src="/budget.html">
</iframe>
UPDATE:
Как я понимаю, вы хотите изменить IFrame страницы, когда пользователь нажмет (страница нулевой страницы на одной странице два) on this page.
Вы можете изменить расположение фрейма, как это,
document.getElementById("agencyframe").src = "/budget.html";
так изменить свою функцию, как это,
function pageZero() {
document.getElementById("prin_div1").setAttribute("class", "prin_on");
document.getElementById("prin_div2").setAttribute("class", "prin_off");
document.getElementById("prin_div3").setAttribute("class", "prin_off");
document.getElementById("agencyframe").src = pages[0];
}
function pageOne() {
document.getElementById("prin_div1").setAttribute("class", "prin_off");
document.getElementById("prin_div2").setAttribute("class", "prin_on");
document.getElementById("prin_div3").setAttribute("class", "prin_off");
document.getElementById("agencyframe").src = pages[1];
}
function pageTwo() {
document.getElementById("prin_div1").setAttribute("class", "prin_off");
document.getElementById("prin_div2").setAttribute("class", "prin_off");
document.getElementById("prin_div3").setAttribute("class", "prin_on");
document.getElementById("agencyframe").src = pages[2];
}
UPDATE -2:
Изменение contentChanged
функции как это,
function contentChanged(e) {
if (!timer) { pageChange(); timer=true;}
if (timerSetter) {
clearTimeout(timerSetter);
timerSetter = setTimeout("pageChange()",time);
}
var newSrc = e.contentWindow.location.href;
for (var j=0; j < pages.length; j++) {
if (newSrc.match(pages[j])) {
i = j+1;
document.getElementById("prin_div"+i).setAttribute("class", "prin_on");
if(i==pages.length) {
i=0;
}
} else {
document.getElementById("prin_div"+(j+1)).setAttribute("class", "prin_off");
}
}
}
Спасибо за ваше предложение. Я думал об этом, но проблема заключается в том, как динамически изменять контроллеры для включения/выключения, поскольку страницы либо динамически загружаются в последовательности непосредственно с контроллеров. На данный момент у меня есть три варианта контроллеров, соответствующих странице, которую они отображают на –
. Это, конечно же, не будет большой проблемой - щелчок на контроллере перевернул бы щелкнутый контроллер в состояние (легко с помощью CSS и просто добавление класса при включении); иначе функция, называемая setTimeout, будет вращаться через массив из трех контроллеров, загружая их соответствующую страницу и устанавливая контроллер на «включено». Это обычная проблема при навигации по навигационным системам, и вы можете найти много ресурсов в Интернете. – Armatus