time delay
    
chris
    
    
      
    
  - javascript
 
hallo
schreibe mein 1.javascript pgm, war nach 2 tagen zu 99% fertig und bin nun seit 6 tagen am letzten 1% problem - hoffentlich kann jemand helfen.
will ein memory-spiel mit bildern machen. erstelle in asp/html eine tabelle aus z.b. 4x4 feldern, in jedes kommt ein bild rein mit einem onClick event, der das folgende javascript ausführt.
das ganze funktioniert einwandfrei ausser, dass beim 2. bild, wenn das pgm in den timedelay reinläuft, das bild nicht gedreht wird, bis die zwei sekunden verzögerung um sind, dann wird das bild gedreht und natürlich gleich zurückgedreht. sobald ich z.b. einen alert irgendwo reinhänge dann funktioniert es, es muss irgendein aktualisierungsproblem sein.
glaubt mir, ich habe alles versucht und in jeder hilfe gesucht, die zu finden war (ca. 40 std. an diesem problem). ich mache den preload der bilder, habe schon versuchsweise alles in mehrere functions gesplittet, es mit der timer-funktion versucht, habe schon eine name.complete-abfrage eingebaut, es mit .reload oder window.opener.history und 1000 anderen varianten versucht.
hier kommt der code
<script language="JavaScript">
<!-- vor alten Browsern verstecken
var val_DLCheck, val_LastPicPos, val_LastPicNr, bln_ImgLoad;
val_DLCheck = 0;
function check_it_up(val_PicPos, val_PicNr) {
val_DLCheck += 1;
document["p"+val_PicPos].src = "./" + val_PicNr + ".jpg";
bln_ImgLoad = false;
while (bln_ImgLoad != true) {
bln_ImgLoad = document["p"+val_PicPos].complete;
}
document["p"+val_PicPos].src = "./" + val_PicNr + ".jpg";
if (val_DLCheck == 1) {
val_LastPicPos = val_PicPos;
val_LastPicNr = val_PicNr
}
else {
val_DLCheck = 0;
if (val_LastPicNr != val_PicNr) {
 timedelay()
 document["p"+val_PicPos].src = "./rs.jpg";
 document["p"+val_LastPicPos].src = "./rs.jpg";
}
}
}
function timedelay() {
var val_Time1, val_Time2;
val_Time1 = new Date().getTime();	val_Time2 = new Date().getTime();
while (val_Time1 >= (val_Time2-1500)) {
val_Time2 = new Date().getTime();
}
}
// -->
</script>
Hallo chris
1. Dein Script kann nicht so funktionieren. Es gibt bei JS nicht die Möglichkeit einen Befehl (auch als Funktion) einzubauen, der die weitere Bearbeitung aufhält. Beim Aufruf eines Befehls wird nicht gewartet bis dieser fertig ist, sondern es wird sofort der nächste Befehl ausgeführt.
2. Versuche lieber nie eine Zeitspanne mit einer Differenz beim Date Objekt zu erreichen, denn das kann zu einer Endlos-Schleife führen.
3. Lösung: Du musst an der Stelle wo die Funktionen zeitverzögert ausgeführt werden sollen ein Interval setzen, nachdem diese ausgeführt werden sollen. Dies geht so: window.setInterval("funktionsname()",2000). Dann musst du noch eine kleine Funktion haben, die du mit dem Interval-Befehl aufrufst und in der deine Befehle ausgeführt werden. http://selfhtml.teamone.de/javascript/objekte/window.htm#set_interval
Ok.Tschau.Lukas
Morgen.
<script language="JavaScript">
<script type="text/javascript"> ist besser.
 => http://selfhtml.teamone.de/javascript/intro.htm#javascriptbereiche
[...]
timedelay()
Daraus wird window.setTimeout("timedelay()",2000);
 => http://selfhtml.teamone.de/javascript/objekte/window.htm#set_timeout
Und das hier...
document["p"+val_PicPos].src = "./rs.jpg";
document["p"+val_LastPicPos].src = "./rs.jpg";
...kommt in die timedelay-Funktion:
function timedelay() {
document["p"+val_PicPos].src = "./rs.jpg";
 document["p"+val_LastPicPos].src = "./rs.jpg";
}
[...]
So sollte das eigentlich gehn, falls nicht, wäre es gut, wenn du das Script zum Testen hochladen würdest.
Gruß
Norbert