setTimeout - Endlose alert Meldung!
p@t
- javascript
hallo,
sitz mal wieder heftig aufm schlauch, bzw. hab wohl irgendwas nicht
richtig verstanden.
folgendes: ich möchte dass mir einzelne layer nacheinander angezeigt
und wieder ausgeblendet werden. die namen für die layer habe ich in
einem array gespeichert, welches mit einer for schleife durchlaufen
wird.
jetzt ist es so. dass die layer anzeigen funktion den layer zwar öffnet,
ABER: immer nur den letzten im array!
was zum henker macht er da?
hier die funktionen:
hopefully
p@
function vorspiel()
{
zahl++;
var neue_anzahl = new Array();
zufallszahl = Math.round(3 * Math.random()) + 1;
anzahl = anzahl.concat(zufallszahl);
ebene();
}
function ebene()
{
while(x < zahl)
{
anfang++;
ende++;
wert = anzahl.slice(anfang, ende);
auf(wert);
}
}
function auf(wert)
{
x++;
MM_showHideLayers(""+wert+"",'','show');
befehl = window.setTimeout("zu()", 600);
}
function zu()
{
window.clearTimeout(befehl);
MM_showHideLayers('1','','hide','2','','hide','3','','hide','4','','hide');
ebene();
}
Hi,
function ebene()
{
while(x < zahl)
{
anfang++;
ende++;
wert = anzahl.slice(anfang, ende);
auf(wert);
}
}
wie hast Du diese Variablen (und andere, wie z.B. befehl) denn deklariert? Der Initialwert im globalen Scope ist wichtig, denn sonst werden sie bei jedem Funktionsaufruf stets mit Standardwerten initialisiert.
Cheatah
wie sagt man so schön:
ich habe globale variablen benutzt, habe sie also im scrip bereich aber ausserhalb
der funktionen deklariert! ich denke das ist ok so!
p@
Hi,
ich denke das ist ok so!
nein - das ist notwendig so ;-)
Mit welchem Werten hast Du die Variablen initialisiert, und was enthalten sie während der Scriptausführung (alert())?
Cheatah
hi Cheatah
ichhabe dir hier das ganze script reingepackt zu m besseren verständnis:
die alert meldung gibt mir den array inhalt aus. sonst nichts
gruß
p@
<script language="JavaScript" type="text/javascript">
var anzahl, zahl, zaehler, auswahl, anfang, ende, befehl, x;
function auf(wert)
{
x++;
MM_showHideLayers(""+wert+"",'','show');
befehl = window.setTimeout("zu()", 600);
}
function zu()
{
window.clearTimeout(befehl);
MM_showHideLayers('1','','hide','2','','hide','3','','hide','4','','hide');
ebene();
}
function ebene()
{
while(x < zahl)
{
anfang++;ende++;
wert = anzahl.slice(anfang, ende);
alert(anzahl);
auf(wert);
}
}
///////////////////////
// hier gehts los!!! //
///////////////////////
function start()
{
anzahl = new Array;
zahl = 0;zaehler = 0; x =0; anfang = -1; ende = 0;
auswahl = new Array;
vorspiel();
}
function vorspiel()
{
zahl++;
var neue_anzahl = new Array();
zufallszahl = Math.round(3 * Math.random()) + 1;
anzahl = anzahl.concat(zufallszahl);
ebene();
}
//hier kommt man rein wenn man auf einen layer klickt!
function spielen(nr,anzahl)
{
auswahl = auswahl.concat(nr);
if(auswahl[zaehler] == anzahl[zaehler])
{
zaehler++;
if(zaehler == (anzahl.length))
{
alert("super naechste runde!");
zaehler = 0;
vorspiel();
auswahl = new Array;
}
}
else
{
alert("ende!");
self.location.reload();
}
}
</script>
Hi,
ichhabe dir hier das ganze script reingepackt zu m besseren verständnis:
danke. Ich habe aber ehrlich gesagt keine Lust, Dein Gesamtsystem zu verstehen - deshalb verstehe ich dieses hier nicht:
die alert meldung
Wieso nur eine? Du weißt, was im einzelnen wo passieren sollte, welche Werte wann wo auftreten sollten. Überprüfe, wo es Unterschiede gibt!
gibt mir den array inhalt aus. sonst nichts
Soweit ich das eben überblicke, ist das auch völlig korrekt so.
var anzahl, zahl, zaehler, auswahl, anfang, ende, befehl, x;
Diese Werte stehen allesamt auf "undefined", sofern Du nichts besseres angibst. Das ist Dir hoffentlich bewußt.
Cheatah
hallo Cheatah :)
ichhabe dir hier das ganze script reingepackt zu m besseren verständnis:
danke. Ich habe aber ehrlich gesagt keine Lust, Dein Gesamtsystem zu verstehen - deshalb verstehe ich dieses hier nicht:
kann ich verstehen, ist auch nicht von nöten!
die alert meldung
Wieso nur eine? Du weißt, was im einzelnen wo passieren sollte, welche Werte wann wo auftreten sollten. Überprüfe, wo es Unterschiede gibt!
hatte schon mehrere drin und immer alle schön gefüllt mit den richtigen werten!
gibt mir den array inhalt aus. sonst nichts
Soweit ich das eben überblicke, ist das auch völlig korrekt so.
jau!
var anzahl, zahl, zaehler, auswahl, anfang, ende, befehl, x;
Diese Werte stehen allesamt auf "undefined", sofern Du nichts besseres angibst. Das ist Dir hoffentlich bewußt.
werden ja alle "befüllt" bevor sie eine funktion ausüben !
-- ich werde mich heute abend noch einmal auf exzessive fehlersuche begeben.
mehr dann morgen :)
gruß
p@
Hi,
var anzahl, zahl, zaehler, auswahl, anfang, ende, befehl, x;
Diese Werte stehen allesamt auf "undefined", sofern Du nichts besseres angibst. Das ist Dir hoffentlich bewußt.
werden ja alle "befüllt" bevor sie eine funktion ausüben !
ja, aber oft z.B. mit "x++". Wie viel ist "undefined + 1"?
Du solltest Deklarationen immer mit Initialwerten durchführen, also z.B.
var x = 0;
Cheatah