Automatische Seitenumschaltung mit Javascript
Mark Huster
- javascript
Ich möchte meine Internetseite als Präsentation (wie Powerpoint)laufen lassen. Nun war mein Gedanke in gleichen Seiteabständen, den Seitenverweis eines Frames mit Javascipt umzuschalten. Folgendes Script habe ich dazu geschreiben:
var a = new Array();
a[0] = "seite1.html";
a[1] = "seite2.html";
a[2] = "seite3.html";
a[3] = "seite4.html";
var i = 0;
while (i<3) {
Animation();
i++;
}
function Animation () {
if (i > 3) i = 0;
document.write(
'<frameset cols="*,1000,*" framespacing="0" border="0" frameborder="0">',
'<frame src="links.html" noresize scrolling="no" name="links">',
'<frameset rows="100,*" framespacing="0" border="0" frameborder="0">',
'<frame src="oben.html" noresize scrolling="no" name="oben">',
'<frame src="', a[i], '" noresize scrolling="auto" name="Hauptframe">',
'</frameset>',
'<frame src="rechts.html" noresize scrolling="no" name="rechts">',
'</frameset>');
window.setTimeout("Animation()", 5000);
}
Nun schaltet es zwar um, jedoch lediglich einmal von seite1.html auf seite4.html .
Geht das überhaupt, wei ich mir das gedacht habe?
Grüße,
Nun schaltet es zwar um, jedoch lediglich einmal von seite1.html auf seite4.html .
Geht das überhaupt, wei ich mir das gedacht habe?
ja - bloß erhöht deine while schleife i von 1 auf 4 und erst dann wird der nexte schritt ausgeführt. daher die 1 zu 4 shcaltung.
MFG
bleicher
Hi!
Imho hat Dein Script ein paar Haken.
Zuerst die Whileschleife:
Du zaehlst megaschnell von 0 hoch auf 3 und rufst jedesmal die Funktion auf. Was soll das? Der Browser kommt ja gar nicht dazu die Seiten zu laden da wird das Frameset schon wieder ueberschrieben. Klar, dass Du nur das letzte zu Gesicht bekommst.
Die Funktion:
Warum hast du diese umstaendliche Loesung gewaehlt? Ich kenne Deine Seite nicht, aber gibt es einen Grund, warum du nicht einfach den Inhalt des einen zu aktualisierenden Frames laedst?
Die Framekonstruktion:
Warum hast Du ueberhaupt so ein Framekonstrukt gewaehlt? Wenn schon Frames wuerde bei Dir doch ein iFrame, in dem seite1.html - seite4.html geladen werden, genuegen.
setTimeout:
Welchen Zweck erfuellt das hier? Du rufst insgesamt 4x die Funktion Animation() auf, diese ruft sich dann nach 5000 ms wieder selbst auf. Du hast also 4x diese Funktion am laufen. Endlos.
globale Variable(n):
die sollte man wenn moeglich vermeiden. Ich bin mir fast sicher, dass dein Script nicht immer die seite laden soll, die grad in der globalen variable steht. das tut es aber. ein Grund warum immer Seite 4 angezeigt wird. Deine 4 Funktionasuafrufe haspeln allesamt jedesmal Nr. 4 ab.
Loesungsansaetze gibts hier viele. Mein bevorzugter Ansatz waere eine dynamisch erstelle, framelose Seite (seite.php?seite=4) mit einem
window.onload=function()
{
window.setTimeout("window.location.href='seite.php?seite=<mit php nachste Seitenzahl einfuegen>'", 5000)
}
im Javascript. (meinetwegen auch in perl, ASP, ... stat php geschrieben)
Das mag bei Dir aber ja keine Option sein.