Hallo,
Ich moechte in einer for Schleife eine Funktion sequentiell aufrufen. Dieses bedeutet die Funktion soll erst fuer das naechste Element aufgerufen werden, wenn die fuer das aktuelle Element fehlerfrei ausgefuehrt wurde.
So eine art von 'next' Befehl, damit ich die for Schleife selber steuern kann.
Hier die for Schleife:
for (var i=0;i<inputs.length;i++) {
if (inputs[i].getAttribute("type") == "hidden") {
if (inputs[i].name.match(/^ID/)) {
var inds = inputs[i].name.split("_");
// At least 2 elements in inds (<string>_index)
var ind = (inds.length > 1) ? inds[1] : -1;
if (ind >= iteration) {
add(ind,type,cpt);
if (waitForID('ID_'+ind)) { next; }
}
}
}
}
function waitForID(id) {
if (document.getElementById(id)) { return true; }
else { setTimeout("waitForID('"+id+"')",10); }
}
Die 'add' Funktion soll neue Elemente in einer Tabelle erzeugen.
Zur Info: die 'add' Funktion verwendet Ajax und laesst ein Perl Script auf dem Server laufen, der das HTML Code erzeugt.
Die for Schleife darf nur weiterlaufen, wenn es sichergestellt ist, dass die neue Element der Tabelle richtig erzeugt wurden. Deswegen die Pruefung auf die neue ID: waitForID ist eine rekursive Funktion, die jede 10ms kugen soll, ob die neue ID da ist. Wenn es der Fall ist, erst dann darf die for Schleife zum naechsten Element gehen. Das "next" gibt es aber im Javascript nicht und ich weiss es nicht, wie ich es ersetzen kann...
Ich habe mit dem setTimeout auch versucht, die 'add' Funktion in regelmaessigen Abstaenden aufzurufen. Es passiert aber manchmal, dass die Zeit nicht reicht und ich moechte auch nicht zu lange Abstaende haben.
Ich wuerde mich auf Tipps sehr freuen...
Gruss,
Vince.