romero: Schleife fortlaufen wenn Funktion fertig ist

hallöchen auch.

hab da wieder mal ein problem.ich möchte anhand einer schleife eine funtion starten,diese funktion ausführen und erst dann die schleife wieder weiterlaufen wenn da ein button gedrückt wurde.

speziell geht es dadrum,das ich,je nach dem wie groß ein bestimmtes array ist,eine schleife erstellt habe wo als erstes das array ausgelesen wird und dann für jede stelle im array eine funktion gestartet wird,wo ich dann mittels einem button einen wert (input type="text") erstelle,welcher dann zurückgegeben und in einem neuen array gespeichert werden soll.

es geht nämlich darum das anhand dieser schleife eine exceltabelle ausgelesen wird,wo aber ähnliche tabellebblätter vorhanden sind (z.b. bereiche ber_A070 / ber_A070_11 / ber_A070_12 / ... ). angegeben habe ich aber nur A070 (laut einer auswahlliste).das suchen in der excelliste klappt,auch das ändern mittels diesem button bzw das speichern in einem neuen array.aber nur wenn ich ein bereich angegeben hab (z.b. new Array(A070) ).

nun kann es aber vorkommen das 2 oder mehrere bereiche zu einem großen gehören ( z.b. B010,C020,D030 ). da ich aber nich möchte das ich für jeden einzelnen bereich diese funktion schreiben möchte,dachte ich da an eine schleife,wo sozusagen jeder einzelner bereich aus dem array ausgelesen (new Array(B010,C020,D030) ) und diese besagte funktion gestartet wird.

nur bisher läuft die schleife komplett durch (so lange wie "new Array.length") aber er stoppt sozusagen nicht an der stelle wo die funktion aufgerufen wird bzw der button zum einsatz kommt.der "button" soll sozusagen den neuen wert setzen und die schleife fortsetzen.

hier mal das was ich versucht hab:

//--> hier werden je nach dem wieviele bereiche ich gewählt hab,ein neues array erzeugt  
  
					if( Bereich1Value != "--" && Bereich2Value == "--" && Bereich3Value == "--" )  
					{  
						x.push( Bereich1 );  
						y.push( Bereichsnummer1 );  
					};  
  
					if( Bereich1Value != "--" && Bereich2Value != "--" && Bereich3Value == "--" )  
					{  
						x.push( Bereich1, Bereich2 );  
						y.push( Bereichsnummer1, Bereichsnummer2 );  
					};  
  
					if( Bereich1Value != "--" && Bereich2Value != "--" && Bereich3Value != "--" )  
					{  
						x.push( Bereich1, Bereich2, Bereich3 );  
						y.push( Bereichsnummer1, Bereichsnummer2, Bereichsnummer3 );  
					};  
  
					var i = 0;  
//--> hier diese besagte schleife  
					while( i < x.length )  
					{  
//-->festlegen der exceltabelle + tabellenblätter  
						if( Flugzeugtyp == "A318" || Flugzeugtyp == "A319" || Flugzeugtyp == "A320" || Flugzeugtyp == "A321" )  
						{  
							var infile = "G:/Hamburg_Original/STUECKLISTE/" + FLT + "/" + Flugzeug + ".xls";  
							var startSheet = "Ber_" + x[i] + y[i];  
						};  
  
						if( Flugzeugtyp == "A330-200" || Flugzeugtyp == "A330-300" || Flugzeugtyp == "A340" || Flugzeugtyp == "A340-500" || Flugzeugtyp == "A340-600" )  
						{  
							var infile = "G:/Hamburg_Original/STUECKLISTE/" + FLT + "/" + Flugzeug + "_SK" + Sek + ".xls";  
							var startSheet = "Ber_" + x[i] + y[i];  
						};  
  
						if( Flugzeugtyp == "A330-200 Frachter" )  
						{  
							var infile = "G:/Hamburg_Original/STUECKLISTE/" + FLT + "/" + Flugzeug + "_SK" + Sek + ".xls";  
							var startSheet = "Ber_" + x[i] + y[i];  
						};  
						  
//-->die exceltabelle auslesen und anzahl bzw ähnliche bereiche in ein array schreiben  
						z = Excel_Liste_Überprüfung( infile, startSheet );  
//--> das klappt :)  
						var Anzahl_Tabellenblatt = z.splice( 0, 1 );  
						var Tabellenblatt = z;  
//-->problem beginnt hier:test ist die variable welche durch die funktion erstellt wird(rückgabewert des durch den button gesetzen wert)  
						test = Alternativtext_Eingabe( Anzahl_Tabellenblatt, Tabellenblatt, x[i], y[i] );  
  
						i++;  
					};

und hier die funtion alternativtext_eingabe():

		function Alternativtext_Eingabe( Anzahl_Tabellenblatt, Tabellenblatt, Bereich, Bereichsnummer )  
		{  
			if( Anzahl_Tabellenblatt > 1 )  
			{  
				if( Tabellenblatt.length > 3 )  
				{  
//--> ausgabe in meinem script( wo man den wert eingeben kann) bzw ein- und ausblenden diverser zeilen  
					var tab = " " + Bereich + Bereichsnummer + " sowie " + ( Tabellenblatt.length - 1 ) + " ähnliche Bereiche mit " + Bereich + Bereichsnummer;  
  
				} else { var tab = Tabellenblatt; };  
  
				document.getElementById( "STL_Meldungen_Alt_Text" ).style.display = "inline";  
				document.getElementById( "STL_Meldungen_Alt_Text_Links" ).style.display = "none";  
				document.Auswahl.Start.disabled = true;  
				document.getElementById( "STL_Meldungen_Alt_Text" ).disabled = false;  
				document.getElementById( "STL_Meldungen_Alt_Text_Links" ).disabled = true;  
  
				document.getElementById( "STL_Meldungen_Alt_Text" ).innerHTML = '<p class="STL_Meldungen_Überschreiben">Folgende Bereiche wurden gefunden:<font color="darkred">' + tab + '</font>. Bitte Alternativnamen eingeben: <input type="text" id="Überschreiben_Alt_Text" value="" size="10" maxlength="10" class="STL_Meldungen_Button"></input> <input type="button" id="Alt_Text" value="OK" class="STL_Meldungen_Button"></input>';  
				document.getElementById( "STL_Meldungen_Alt_Text_Links" ).innerHTML = '<p class="STL_Meldungen_Überschreiben_Links">Ihr Alternativtext: <input type="text" id="Überschreiben_Alt_Text_Links" value="" size="20" maxlength="10" class="STL_Meldungen_Button_Links"></input> <input type="button" id="Alt_Text_Links" value="OK" class="STL_Meldungen_Button_Links"></input>';  
  
				document.getElementById( "Überschreiben_Alt_Text" ).value = Bereich + Bereichsnummer;  
  
				//------------------------------------------------------------//  
				//-- Alternativ - Text - Eingabe (Bereich + Bereichsnummer) --//  
				//------------------------------------------------------------//  
//-->hier wird die funktion gestartet wenn man auf dem button drückt(neuen wert setzen)  
				document.getElementById( "Alt_Text" ).onclick = function() {  
  
					var Alt_Text = document.Auswahl.Überschreiben_Alt_Text.value;  
					var Alt_Text_Bereich = Bereich;  
					var Alt_Text_Bereichsnummer = Alt_Text.substr( Alt_Text_Bereich.length, Alt_Text.length );  
  
					Bereich = Alt_Text_Bereich;  
					Bereichsnummer = Alt_Text_Bereichsnummer;  
  
					document.getElementById( "Überschreiben_Alt_Text_Links" ).value = Bereich + Bereichsnummer;  
				};  
			};  
//-->neuen wert zurückgeben  
			return [ Bereich, Bereichsnummer ];  
		};

wie kriege ich also die schleife dazu,erst weiter zu laufen wenn der button gedrückt wurde?

habe versucht das "i" mit in die funktion alternativtext_eingabe zu übernehmen und bei der "button-funktion" zu erhöhen aber da muss ich das script gewaltsam abbrechen da es eine unendlich-schleife wird.keine ahnung wieso,da ich da den wert "i" ja zurück gegeben hab.

ein anderer versuch brachte die button-funktion erst nachdem die komplette schleife durchlaufen war.

könnt mir bitte tipps und ratschläge geben?

vielen dank
lg romero

  1. Hallo romero,

    Javascript kennt kein "Delay" oder "Wait". Lies dir mal die Doku zu setTimeout, setInterval sowie zu den Eventhandlern (z.B. onclick) durch.

    Du wirst deinen Programmfluss dahingehend ändern müssen, dass die Schleife einige Durchläufe macht, einen Eventhandler setzt und den Programmfluss dann beendet. Der Eventhandler sorgt dann dafür, dass es z.B.nach Klick auf einen Button weiter geht.

    Gruß, Jürgen

    1. Hallo romero,

      Javascript kennt kein "Delay" oder "Wait". Lies dir mal die Doku zu setTimeout, setInterval sowie zu den Eventhandlern (z.B. onclick) durch.

      hallo jürgen,

      diese settimeout und setinterval basieren doch auf zeitliche angaben oder?
      nunja ich brauch aber in der hinsicht keine zeitangaben also das er nach so-und-so-viel-sekunden diese funktion erneut aufruft.es soll ja nur einmal diese funktion aufgerufen werden.

      aber ohne die zeitlichen angaben funktionieren beide "set's" nich oder?

      lg romero

      1. Hallo romero,

        mit setTimeout/setInterval werden neue Programm-Thread gestartet, periodisch, zeitverzögert oder bei Wartezeit 0 auch sofort. Für dein Problem (Warten auf Klick) sind aber wahrscheinlich Events die Lösung.

        Gruß, Jürgen

        1. hallo jürgen,

          ich hab da was gefunden,ist genau das was ich suche.

          hab dazu mein code mal angepasst:

            
          					for( var i = 0; i < x.length; i++ )  
          					{  
          						if( Flugzeugtyp == "A318" || Flugzeugtyp == "A319" || Flugzeugtyp == "A320" || Flugzeugtyp == "A321" )  
          						{  
          							var infile = "G:/Hamburg_Original/STUECKLISTE/" + FLT + "/" + Flugzeug + ".xls";  
          							var startSheet = "Ber_" + x[i] + y[i];  
          						};  
            
          						if( Flugzeugtyp == "A330-200" || Flugzeugtyp == "A330-300" || Flugzeugtyp == "A340" || Flugzeugtyp == "A340-500" || Flugzeugtyp == "A340-600" )  
          						{  
          							var infile = "G:/Hamburg_Original/STUECKLISTE/" + FLT + "/" + Flugzeug + "_SK" + Sek + ".xls";  
          							var startSheet = "Ber_" + x[i] + y[i];  
          						};  
            
          						if( Flugzeugtyp == "A330-200 Frachter" )  
          						{  
          							var infile = "G:/Hamburg_Original/STUECKLISTE/" + FLT + "/" + Flugzeug + "_SK" + Sek + ".xls";  
          							var startSheet = "Ber_" + x[i] + y[i];  
          						};  
            
          						//-------------------------------------------//  
          						//-- Überprüfen der Excel-Liste ohne Türen --//  
          						//-------------------------------------------//  
            
          						z = Excel_Liste_Überprüfung( infile, startSheet );  
            
          						var Anzahl_Tabellenblatt = z.splice( 0, 1 );  
          						var Tabellenblatt = z;  
            
          						hallo = confirm( x[i] + y[i] );  
            
          						if( hallo == true )  
          						{  
          							msg( hallo );  
            
          							continue;  
          						};  
            
          						break;  
          					};
          

          wenn er dann mittels confirm mir die sachen ausgibt,wird beim drücken von "ok" true zurückgeliefert.und wenn das so ist,läuft dann die schleife weiter.genau so sollte es sein.

          nun zu aber meinem problem.wie kriege ich denn mein code dazu,das er beim onclick-button ein true zurücksendet?
          weil ich nun dieses hallo = confirm( x[i] + y[i] ) durch folgendes ersetze:

          						hallo = Alternativtext_Eingabe( Anzahl_Tabellenblatt, Tabellenblatt, x[i], y[i] );  
            
          						function Alternativtext_Eingabe( Anzahl_Tabellenblatt, Tabellenblatt, Bereich, Bereichsnummer )  
          						{  
          							if( Anzahl_Tabellenblatt > 1 )  
          							{  
          								if( Tabellenblatt.length > 3 )  
          								{  
          									var tab = " " + Bereich + Bereichsnummer + " sowie " + ( Tabellenblatt.length - 1 ) + " ähnliche Bereiche mit " + Bereich + Bereichsnummer;  
            
          								} else { var tab = Tabellenblatt; };  
            
          								document.getElementById( "STL_Meldungen_Alt_Text" ).style.display = "inline";  
          								document.getElementById( "STL_Meldungen_Alt_Text_Links" ).style.display = "none";  
          								document.Auswahl.Start.disabled = true;  
          								document.getElementById( "STL_Meldungen_Alt_Text" ).disabled = false;  
          								document.getElementById( "STL_Meldungen_Alt_Text_Links" ).disabled = true;  
            
          								document.getElementById( "STL_Meldungen_Alt_Text" ).innerHTML = '<p class="STL_Meldungen_Überschreiben">Folgende Bereiche wurden gefunden:<font color="darkred">' + tab + '</font>. Bitte Alternativnamen eingeben: <input type="text" id="Überschreiben_Alt_Text" value="" size="10" maxlength="10" class="STL_Meldungen_Button"></input> <input type="button" id="Alt_Text" value="OK" class="STL_Meldungen_Button"></input>';  
          								document.getElementById( "STL_Meldungen_Alt_Text_Links" ).innerHTML = '<p class="STL_Meldungen_Überschreiben_Links">Ihr Alternativtext: <input type="text" id="Überschreiben_Alt_Text_Links" value="" size="20" maxlength="10" class="STL_Meldungen_Button_Links"></input> <input type="button" id="Alt_Text_Links" value="OK" class="STL_Meldungen_Button_Links"></input>';  
            
          								document.getElementById( "Überschreiben_Alt_Text" ).value = Bereich + Bereichsnummer;  
            
          								//------------------------------------------------------------//  
          								//-- Alternativ - Text - Eingabe (Bereich + Bereichsnummer) --//  
          								//------------------------------------------------------------//  
            
          								document.getElementById( "Alt_Text" ).onclick = function() {  
            
          									var Alt_Text = document.Auswahl.Überschreiben_Alt_Text.value;  
          									var Alt_Text_Bereich = Bereich;  
          									var Alt_Text_Bereichsnummer = Alt_Text.substr( Alt_Text_Bereich.length, Alt_Text.length );  
            
          									Bereich = Alt_Text_Bereich;  
          									Bereichsnummer = Alt_Text_Bereichsnummer;  
            
          									document.getElementById( "Überschreiben_Alt_Text_Links" ).value = Bereich + Bereichsnummer;  
            
          									return true;  
          								};  
          							};  
            
          							return true;  
          						};
          

          wie kriege ich also aus dem document.getElementById( ... ).onclick = function() { ... } einen rückgabewert (also true beim anklicken bzw. funktionsdurchlauf),welcher in die function Alternativtext_Eingabe() übernommen wird und ebenfalls zurück gegeben wird an die variable hallo?

          so wie es halt confirm() macht.

          vielen lieben dank

          lg romero

          1. nachtrag:

            bzw. das ich weitere daten bzw. variablen zurückgeben kann

            also aus dem return true ein return [ true, bereich, bereichsnummer, ... ]

            das ist mir noch nicht ganz schlüssig.

            vielen dank.

            lg romero

            1. Hallo romero,

              du solltest dein Projekt erst mal bei Seite legen und dich an einem kleinen Testprogramm mit Eventhandling vertraut machen. Eventhandler liefern nichts zurück. Der User löst ein Event aus (Klick auf Button) und das System bzw. der Browser ruft den Eventhandler auf. Eventuelle Rückgaben können nur von System ausgewertet werden. Dein Script bleibt da draußen vor.

              Eventgesteuerte Programmierung sieht vereinfacht so aus: Das Script definiert die Eventhandler und ordnet sie den Events zu, und die Handler erledigen dann die Arbeit. Um zu deinem Problem mit dem Warten zu kommen: dein Script läuft bis zu dem Punkt, wo auf eine Aktion des Users gewartet werden soll, dann setzt es den Handler (was auch schon früher geschehen sein kann) und beendet sich. Durch das Ereignis wird der Eventhandler aufgerufen und macht weiter ...

              Gruß, Jürgen

              PS Dein Programmlisiting habe ich mir übrigens nicht angesehen, da blicke ich nicht durch.

              1. Eventgesteuerte Programmierung sieht vereinfacht so aus: Das Script definiert die Eventhandler und ordnet sie den Events zu, und die Handler erledigen dann die Arbeit. Um zu deinem Problem mit dem Warten zu kommen: dein Script läuft bis zu dem Punkt, wo auf eine Aktion des Users gewartet werden soll, dann setzt es den Handler (was auch schon früher geschehen sein kann) und beendet sich. Durch das Ereignis wird der Eventhandler aufgerufen und macht weiter ...

                Gruß, Jürgen

                hy jürgen (oder an die die das auch lesen),

                irgendwie stehe ich auf dem schlauch.könntest du mir ein beispiel nennen wo z.b. solch ein "warten auf aktion" vorhanden ist?

                habe versucht in einer onclick-funktion eine schleife zu starten,wo eine erneute funktion aufgerufen wird,welche durch verschiedene bedingungen eine erneute onclick-funktion starten,wo ich dann diverse werte ändern möchte.

                habe auch mir diese setinterval oder settimeout und natürlich die dokus zu onclick durchgelesen aber habe bisher keine passende lösung gefunden die mein problem beheben.

                mal eine vereinfachte form meines scriptes:

                function init_basis()  
                {  
                  var übernehmen = function()  
                  {  
                    var x = "1";  
                    for( var i = 0; i < bereiche.length; i++ )  
                    {  
                      test = testfunction( bereiche[i], x );  
                      testfunction( bereiche, x );  
                      {  
                        if( bereiche > 1 )  //--> bedingungen für die onclick-funktion  
                        {  
                          var klickfunktion = function()  
                          {  
                            x = "2"; //--> bestimmten wert ändern  
                  
                            return x;  
                          };  
                          document.getElementById( "ändern" ).onclick = klickfunktion;  
                        };  
                        return x;  
                      };  
                      if( test == "2" )  
                      {  
                        continue;  
                      };  
                      break;  
                    };  
                  };  
                  document.getElementById( "übernehmen" ).onclick = übernehmen;  
                };
                

                wenn z.b. innerhalb der schleife das ganze so schreiben würde (mit confirm),dann funktioniert das:

                function init_basis()  
                {  
                  var übernehmen = function()  
                  {  
                    var x = "1";  
                    for( var i = 0; i < bereiche.length; i++ )  
                    {  
                      test = confirm(bereiche);  
                      if( test == true )  
                      {  
                        continue;  
                      };  
                      break;  
                    };  
                  };  
                  document.getElementById( "übernehmen" ).onclick = übernehmen;  
                };
                

                was ich erreichen will ist,das mit hilfe der klickfunktion ein beliebiger werd geändert wird,aber danach die schleife erst weiterläuft.

                @jürgen.bitte zeige anhand eines kurzen bsp wie du das mit dem warten meinst.stehe grad echt aufn schlauch.

                vielen dank
                romero

                1. Hallo romero,

                  var klickfunktion = function()
                            {
                              x = "2"; //--> bestimmten wert ändern

                  return x;
                            };

                  noch einmal: die Rückgabe von Eventhandlern kannst du nicht direkt verwerten. Sie müssen die Daten "irgendwo anders" speichern, z.B. in globalen Variablen oder in einer geeigneten Objektstruktur.

                  @jürgen.bitte zeige anhand eines kurzen bsp wie du das mit dem warten meinst.stehe grad echt aufn schlauch.

                  warten

                  Gruß, Jürgen

                  1. @jürgen.bitte zeige anhand eines kurzen bsp wie du das mit dem warten meinst.stehe grad echt aufn schlauch.

                    warten

                    Gruß, Jürgen

                    hallo jürgen,

                    ich hab in der zwischenzeit mal ein bisschen mit settimeout,etc. rumexperimentiert.

                    ich habe da folgenden code von selfhmtl einfach mal testweise übernommen:

                    var i = 0;  
                    function Zaehlen () {  
                      i = i + 1;  
                      aktiv = setTimeout("Zaehlen()", 1000);  
                    }  
                      
                    function Aufhoeren () {  
                      clearTimeout(aktiv);  
                      alert(i + " Sekunden");  
                    }  
                      
                    aktiv = setTimeout("Zaehlen()", 1000);
                    

                    und diese probiert in meine funktion function init_basis bzw var übernehmen = function() einzuarbeiten.leider brachte er mir das ein objekt erwartet wird.

                    wenn ich diese aber ausserhalb dieser funktionen testen lasse funktioniert das.wo liegt da mein fehler?denn wenn ich deinen wunderbaren script anschaue (genau das was ich suche) dann sehe ich da ebenfalls ein window.settimeout().aber wenn ich das abändere dann würde zu 100% eine gleiche fehlermeldung kommen.

                    lg romero

                    1. Hallo romero,

                      das setTimeout in meinem Beispiel hat nur die Aufgabe, dem Browser Zeit zu geben, die Änderungen (display = ...) auch anzuzeigen. Du kannst die Funktion "schleife" an dieser Stelle auch direkt aufrufen. Nur wird das Dialog-Div mit dem Button dann nie ausgeblendet. Probier es mal aus.

                      Mit setTimeout werden Funktionen nur zeitverzögert aufgerufen, dabei aber auch aus dem Programmfluss genommen, mit setInterval passiert das immer wieder.

                      Zur Info:

                      Javascript kann man nur mit alert oder confirm anhalten. (Oder gibt es da noch mehr?) Abhilfe: Scripe in zwei Funktionen zerlegen und die zweite über ein Event aufrufen.

                      Änderungen am Aussehen der Seite werden erst dann angezeigt, wenn Scripte fertig sind. Abhilfe: Scripe in zwei Funktionen zerlegen und die zweite über setTimeout aufrufen.

                      Gruß, Jürgen

                      1. hallo jürgen,

                        vielen dank für deine bemühungen.die haben mir sehr geholfen.probiere gerade deinen "warte-script" an meinem anzupassen.aber so im großen und ganzen ist es das was ich gesucht hab.vielen dank nochmal.

                        das mit dem objekt erwartet,lag daran das ich die funktion mal vorher definieren sollte :D nun klappt es aber.

                        lg romero

                        1. hallo jürgen,

                          eine frage hab ich noch an dich.kannst du mir mal genau beschreiben wie diese funktionen und schleifen funktionieren?also wann das script genau auf was zugreift?

                          meine sieht nach deiner vorlage nun wie folgt aus:

                          function init_basis()  
                          {  
                            var Übernehmen = function()  
                            {  
                              start();  
                            
                              var Zähler = 0;  
                            
                              function schleife()  
                              {  
                                var end = Zähler+1;  
                                for(;Zähler<end;Zähler++)  
                                {  
                                  //--> Schleifenanweisungen  
                                };  
                              };  
                            
                              function weiter()  
                              {  
                                window.setTimeout(schleife, 0);  
                              };  
                            
                              function start()  
                              {  
                                document.getElementById( "Start" ).onclick = weiter;  
                                schleife();  
                              };  
                            };  
                            
                            document.getElementById( "übernehmen" ).onclick = Übernehmen;  
                          };
                          

                          also mit dem drücken auf den übernehmen-button wird die funktion start() gestartet.da wird auf das drücken des buttons start die funktion weiter gestartet.die wiederrum lässt die funktion schleife starten,oder?

                          weil wollte in die funktion 2 onclicks mittels fallunterscheidung einbauen,aber er nimmt da nur den start-button.

                          deswegen wollt ich mal fragen wie genau diese (dein "warte-script") abläuft.für mein besseres verständnis.will nix 1 zu 1 übernehmen sondern möcht gern wissen was es wo genau macht um es meinem script perfekt anzupassen.

                          vielen dank dafür

                          lg romero

                          1. Hallo romero,

                            dein Script habe ich jetzt nicht getestet, es müsste aber eigentlich Fehler melden.

                            Zu meinem Beispiel:

                            Nach den Laden der Seite wird die Funktion "schleife" aufgerufen.

                            "schleife" macht irgendwas bis eine Bedingung nicht mehr erfüllt ist, dann wird das Dialogfeld eingeblendet und schleife beendet.

                            Jetzt ruht das Script. Erst nach Klick auf den Button wird die Funktion "weiter" aufgerufen.

                            "weiter" blendet das Dialogfeld wieder aus, macht irgendwas und startet dann "schleife". Der Start von "schleife" erfolgt zeitverzögert, damit der Browser Zeit hat, das Dialogfeld auch wirklich auszublenden. Das Beispiel funktioniert auch, wenn "schleife" direkt aufgerufen wird, das Dialogfeld bleibt dann aber eingeblendet.

                            Warten heist in diesem Beispiel nicht, dass das Script "stehen bleibt" und auf ein Ereignis wartet, wie z.B. bei "confirm". Es wird beendet, und durch ein Ereignis wird die Fortsetzungsfunktion neu gestartet.

                            Ein Beispiel:

                            while(...) {
                              teila();
                              teilb();
                            }

                            wird zu

                            ...onclick = click;
                              function click() {
                                teilb();
                                teila();
                            }
                              teila();
                            und nach Klick wird click() aufgerufen, also
                              teilb();
                              teila();

                            Gruß, Jürgen