Endlosschlaufe
RIDI2oo6
- javascript
0 Hans0 Gunnar Bittersmann0 JürgenB0 Cyx23
hallo zusammen
erstmal sorry für den vielleich etwas unpassenden titel, aber es ist nicht einfach, meinem prob einen titel zu geben... ;)
ich habe eine page mit zwei frames (topFrame und mainFrame). mein ziel ist es, aufgrund eines arrays mit angegebenen url's im mainFrame alle 10sec eine neue seite anzuzeigen. soweit kein problem.
ich möchte dies jedoch in einer endlosschleife tun, und da fängt's an...
ich habe bisher folgenden code:
<script language="JavaScript">
var pages = new Array("http://www.google.ch", "http://www.cacti.net", "http://ksc7578");
var anzPages = pages.length;
var i = 0;
function start_switching()
{
change_location(pages[i]);
}
function change_location(URL)
{
parent["mainFrame"].location.href = URL;
// if(i = (anzPages - 1))
// {
// i = 0;
// }
// else
// {
i = i + 1;
// }
window.setTimeout("start_switching()", 10000);
}
</script>
mit diesem code wechseln die seiten ohne problem, nur leider schiesst der index (i) natürlich übers ziel hinaus.
dies soll der hier auskommentierte bereich verhindern, indem er den index wieder auf null setzt, sobald das ende des arrays erreicht wurde.
aber aus irgendeinem grund wird immer nur die erste seite des arrays (hier: http://www.google.ch) geladen, wenn ich diesen if-block einsetze.
ich kann mir das irgendwie nicht erklären.
hat jemand einen vorschlag? oder könnte man das ganze auf eine andere weise besser realisieren?
vielen dank im voraus für antworten.
greeze
RIDI2oo6
Hi !
if (i=3) {
ist immer wahr, weil die Zuweisung "i ist gleich 3" funktioniert hat. i ist danach 3.
}
if (i==3) {
ist nur dann wahr, wenn i tatsächlich 3 ist !
}
Gruß
Hans
Hello out there!
if (i=3) {
ist immer wahr, weil die Zuweisung "i ist gleich 3" funktioniert hat.
Nein, das stimmt nicht. Nicht, weil die Zuweisung funktioniert hat; sondern wegen des Wertes von i (wie gesagt).
Zum Testen:
if(i = 0) alert("true");
else alert("false");
See ya up the road,
Gunnar
Hello out there!
es ist nicht einfach, meinem prob einen titel zu geben... ;)
ich habe eine page mit zwei frames
mein ziel ist es, aufgrund eines arrays mit angegebenen url's im mainFrame alle 10sec eine neue seite anzuzeigen.
AUA!! Was soll der Unsinn?? Das Web ist kein Kino, und schon gar nicht die Werbung vor dem Film.
Manche Seiten werden sicher länger als 10 Sekunden für den Aufbau brauchen, wenn dann schon eine neue Seite geladen wird, ist der Nutzen gleich null.
Und dass du keine fremden Inhalte in dein Frameset packen solltest, weißt du auch?
<script language="JavaScript">
Fehler. <http://de.selfhtml.org/javascript/intro.htm#javascriptbereiche@title=So geht’s richtig.>
// if(i = (anzPages - 1))
Das weist i den Wert 2 zu, welcher von if als TRUE gewertet wird.
// {
// i = 0;
// }
Also wird i immer auf 0 gesetzt.
See ya up the road,
Gunnar
PS: Du wolltest http://de.selfhtml.org/javascript/sprache/operatoren.htm#vergleich@title=vergleichen?
Hallo RIDI2oo6,
zusätzlich zu dem schon geschriebenen:
es gibt einen Modulo-Operator: http://de.selfhtml.org/javascript/sprache/operatoren.htm#berechnung
"Dia-Shows" kann man auch ohne Javascript mit http://de.selfhtml.org/html/kopfdaten/meta.htm#weiterleitung realisieren.
Gruß, Jürgen
Hallo,
function start_switching()
{
change_location(pages[i]);
window.setTimeout("start_switching()", 10000);
falls du nicht per setInterval eine Funktion aufrufst hat es vielleicht
Vorteile eine zusätzliche Funktion zu verwenden:
function start_switching(i){
if(i){
i++;
call_switching(i);
}}
function call_switching(i){
if(s_sw)window.clearTimeout(s_sw);
var s_sw=window.setTimeout("start_switching("+i+")", 1000);
}
window.onload=function(){call_switching(1)};
Grüsse
Cyx23