n'abend,
Es erscheint direkt die else Bedingung dann öffnet sich nach den 10 Sekunden das Eingabefenster aber die if Bedingung wird nicht ausgeführt da sie ja direkt abgelaufen ist..
du hast das Problem erkannt. Eigentlich sollte die Frage »Was passiert, wenn ich meinen restlichen Code auch verzögert ausführe?« nicht mehr fern liegen.
var question;
setTimeout("passwort=prompt('?','')",4000);
if(passwort=="xy") {
location.href="two.htm";
}
else if(passwort=="XY") {
location.href="two.htm";
}
else {
alert("eek");
}
du möchtest zusammengehörenden Code Gruppieren. Das erreichst du prinzipiell dadurch, dass du ihn in eine Funktionsdeklaration packst. Das hat übrigens den angenehmen Vorteil, dass man das Stück Code mehrfach ausführen kann, wenn man möchte.
function promptPasswort()
{
var pw = prompt( '?', '' );
switch( pw )
{
case 'xy':
location.href = 'foo.bar';
break;
case 'XY':
location.href = 'foobar.baz';
break;
default:
alert( 'eek' );
break;
};
}
Diese Funktion kannst du nun jederzeit ausführen. Wenn kein korrektes Passwort angegeben wurde, sogar mehrfach.
Um das ganze nun verzögert auszuführen, brauchen wir nur folgendes:
window.setTimeout( promptPasswort, 10000 );
promptPasswort
ist nichts anderes als eine Referenz auf deine Funktion. Wir lassen die üblichen () weg, weil wir die Funktion nicht ausführen, sondern als Timeout registrieren wollen.
Wenn du zwischen "XY" und "xy" unterscheiden möchtest, ist deine if-elseif-else Variante ebenso brauchbar, wie mein switch Vorschlag. Wenn du diesen Codeteil nur drin hast, damit du die Groß-/Kleinschreibung ignorieren kannst, möchtest du auf String.toLowerCase() hingewiesen worden sein.
weiterhin schönen abend...
Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|