Hallo,
schon recht lange nutze ich SELFHTML um eigene kleine Projekte in Webseitenform umzusetzen. Bisher bin ich ohne Forenhilfe bei meinen Schustereien ausgekommen, aber gerade macht mich eine Unstimmigkeit verrückt.
Bevor's losgeht: Das Problem selbst – ich wollte es schon mehrfach dabei bewenden lassen, dass 'Programm' funktioniert soweit, aber es lässt mich schlicht nicht los – ist eher nichtig, sehr speziell und möglicherweise leicht gelöst und meine Ausführungen sind sicher etwas unbeholfen und arg lang. Wer sich davon nicht abschrecken lässt…
Also, in aller für nötig befundenen Ausführlichkeit:
(Firefox, neuste Version, Windows XP SP3)
Ich habe eine recht simple Vokabellernhilfe erstellt, die mir ein Deutsches Verb ausgibt (f1), welches ich dann auf Spanisch und konjugiert (insgesamt sieben Formen – abgefragt durch f2-f8) eingeben muss. Ist eine Eingabe richtig, wird in einem rechten Fenster ein Bild eckchenweise aufgedeckt (f9), ist die Eingabe falsch, wird es stattdessen verdeckt (f10). Die betreffenden Funktionen stehen wie folgt da:
function f1()
{
x = parseInt(Math.random()*1 +7);
z = new Array("sein","gehen","wollen","können","haben","denken","fühlen");
document.getElementById("Frage").value = z[x-1];
}
function f2()
{
if (m == 0)
{
var e = (document.Formular.in.value);
z = new Array("ser","ir","querer","poder","tener","pensar","sentir");
var y = z[x-1];
if(e != y)
{document.getElementById("in").value = "";
f10(),f3()}
else
{m++;
f3(),f9()}
}
else
f3()
}
… (Die Funktionen f3 bis f8 wie f2)
function f9()
{
c++;
parent.rechts.document.getElementById(c).src ="../gif.gif";
}
function f10()
{
if(c > 0)
{
parent.rechts.document.getElementById(c).src ="../0.jpg";
c--;
}
}
Das Programm funktioniert soweit. Einzig wenn die Variable c, welche in f9 und f10 verändert und mittels derer das Bild auf- bzw. verdeckt wird, zu Beginn des Antwortvergleichs (beim Auslösen von f2) gleich null ist, scheint die Funktion f10 überhaupt nicht angesprochen zu werden, selbst wenn z.B. f2 bis f5 richtig waren und demnach c in f6 bereits auf vier angewachsen sein müsste. Bisher dachte ich, die Funktionen werden in Reihenfolge angesprochen und ein erster Durchlauf müsste demnach beispielsweise so aussehen:
c=0
f2 (richtig) -> f9: c=1
f3 (richtig) -> f9: c=2
f4 (falsch) -> f10: c=1
f5 (richtig) -> f9: c=2
f6 (richtig) -> f9: c=3
f7 (falsch) -> f10: c=2
f8 (falsch) -> f10: c=1 (Ins Programm übersetzt sollte jetzt nur ein Teil vom Bild aufgedeckt sein)
Stattdessen steht c nach dem ersten Durchlauf auf vier, vier Teile sind aufgedeckt, so als würde alles parallel ausgeführt und es kommt nie zu dem c-- in f10, da c am Anfang des parallelen alles-auf-einmal-Ausführens eben auf null steht. Sobald c größer als null ist, funktioniert (beinahe) alles so, wie es soll.
Kann mir jemand diese Unstimmigkeit in der Reihenfolge erklären? Hat jemand eine Idee, wie ich das ganze lösen könnte? Ich habe schon verschiedene Sachen probiert, stoße jedoch stets auf das gleiche Problem.
Ich hoffe, ich konnte mein Problem verständlich machen.
Grüße