Hallo,
Struppi hat recht:
Es weiß ja keiner was du machst, was ist i was ist j und was sollen diese Variabeln darstellen oder erreichen?
ich merke schon, dass mein Projekt zu groß für mein Hirn ist...
Es kommt einem wirklich vor, als wüsstest du selbst nicht, was du eigentlich erreichen willst. Mit deinem ursprünglichen Code
function test() {
for (i = 0; i < 1; i++) {
//tu was...
}
}
}
wird die Variable i hochgezählt, und zwar genau ein mal, denn dann ist sie bereits nicht mehr <1. Willst du das wirklich? Wenn ja, dann hätte auch eine boolesche Variable gereicht, etwa so:
var fertig = false;
function test() {
if (!fertig) {
//tu was...
fertig = true;
}
}
Aber vermutlich willst du das nicht.
Es macht m.E. wenig Sinn, blind irgendwechen Code auszuprobieren, in der Hoffenung das er vielleicht das bewirkt, von dem man selbst nicht genau weiss, ob man es so will oder nicht...
Das Ergebnis:
Es kommen hintereinander vier Popups mit den Anzeigen 1, 2, 1, 2
Gewünscht wäre: 0, 0, 0, 1
Das kannst du haben, aber ob das viel Sinn macht, bezweifle ich:
function hinweis (n) {
alert(n);
}
function test() {
var i = 0;
var j = 0;
var inner = function () {
if( j < 2 ) {
hinweis(i);
hinweis(j);
window.setTimeout(inner,1000);
j++;
} else {
if (i < 1) {
i++;
}
}
};
inner();
}
test();
Hier passiert dasselbe mit i wie in deinem ursprünglichen Code: Es wird genau 1 mal hochgezählt und solange es 0 ist, wird j hochgezählt. Das wäre wie gesagt einfacher mit einem booeleschen Wert für i zu machen, aber ich hab's jetzt mal so umgesetzt, wie du ursprünglich, nur mit einer Closure-Funktion namens inner().
Gruß, Don P