romero: "Warte-Schleife" mit return-Werten

Beitrag lesen

Hallo an euch da draußen,

ich brauche mal wieder :( eure Hilfe zu einem Problem von mir.

Erstmal grundlegendes:

Ich rufe in einer Funktion eine neue Funktion auf. In der neuen Funktion wird was bearbeitet und eine dadurch erzeugte Variable zurückgegeben, mittels return. Das klappte auch wunderbar. Nun möchte ich aber in dieser neuen Funktion mittels einer "Warte-Schleife" diverse Werte ändern und dann diese Werte mittels return zurück an die ausgehende Funktion geben. Und an dieser Stelle komme ich nicht weiter.

Hier nun die Code-Auszüge:

Die neue Funktion, welche von einer übergeordneten Funktion aufgerufen wird:

		function Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung )
		{
			var i, temp;
			var out = [];
			var ISSUE = [];
			var ISSUE_Verlangt = [];
			var ISSUE_Verlangt_Buchstaben = [];
			var ISSUE_Vorhanden = [];
			var ISSUE_Vorhanden_Buchstaben = [];
			var ISSUE_Hinweiss = [];
			
			for( i = 0; i < infile.length; i++ )
			{
				out = out.concat( findInList( infile[i] ) );
			};

			return out; //--> der bisherige Weg

			function findInList( s )
			{
				// hier passiert was aber tut dafür nix zur Sache
                        };
                };

Nun kommt aber in dieser function Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung ) folgendes drin vor:

Es wird eine dynamische Tabelle erstellt. Je nach dem wo halt (für meine Aufgabe) Unterschiede zu finden sind.

Array ISSUE ist die Ansammlung der Unterschiede.

				for( var i = 0; i < ISSUE.length; i++ )
				{
					ISSUE_Verlangt.push( ISSUE[i].split( "|" )[0] );					
					ISSUE_Vorhanden.push( ISSUE[i].split( "|" )[1] );
					ISSUE_Hinweiss.push( ISSUE[i].split( "|" )[2] );
					ISSUE_Verlangt_Buchstaben.push( ISSUE[i].split( "|" )[3] );
					ISSUE_Vorhanden_Buchstaben.push( ISSUE[i].split( "|" )[4] );
				};

Aufbau der Tabellen-Überschrift und Aufruf der "Warte-Schleife".

				if( ISSUE.length > 0 )
				{
					msg( '<br><b>--- ISSUE - Änderungen ---</b> <input type="button" value="OK" id="test"></input><br><br>' );
					
					table_ISSUE = document.createElement( "table" );
					table_ISSUE.className = "table3";
					table_ISSUE.cellspacing = "2px";
					tbody_ISSUE = document.createElement( "tbody" );
					tbody_ISSUE.id = "Tabellenkopf_ISSUE";

					table_ISSUE.appendChild( tbody_ISSUE );
					document.getElementById( "msgs" ).appendChild( table_ISSUE );

					tr_überschrift_ISSUE = document.createElement( "tr" );
					td0_überschrift_ISSUE = document.createElement( "td" );
					td1_überschrift_ISSUE = document.createElement( "td" );
					td2_überschrift_ISSUE = document.createElement( "td" );
					td3_überschrift_ISSUE = document.createElement( "td" );
					td4_überschrift_ISSUE = document.createElement( "td" );
					td5_überschrift_ISSUE = document.createElement( "td" );

					newTDText0_überschrift_ISSUE = document.createTextNode( "" );
					
					newTDText1_überschrift_ISSUE = document.createElement( "p" );
					newTDText1_überschrift_ISSUE_Element = document.createElement( "font" );
					newTDText1_überschrift_ISSUE_Element.setAttribute( "color", "darkred" );
					newTDText1_überschrift_ISSUE_Element.appendChild( document.createTextNode( "altem" ) );					
					newTDText1_überschrift_ISSUE.appendChild( document.createTextNode( "Matte(n) mit " ) );
					newTDText1_überschrift_ISSUE.appendChild( newTDText1_überschrift_ISSUE_Element );
					newTDText1_überschrift_ISSUE.appendChild( document.createTextNode( " ISSUE " ) );
					
					newTDText2_überschrift_ISSUE = document.createTextNode( "-" );
					
					newTDText3_überschrift_ISSUE = document.createElement( "p" );
					newTDText3_überschrift_ISSUE_Element = document.createElement( "font" );
					newTDText3_überschrift_ISSUE_Element.setAttribute( "color", "darkred" );
					newTDText3_überschrift_ISSUE_Element.appendChild( document.createTextNode( "neuem" ) );					
					newTDText3_überschrift_ISSUE.appendChild( document.createTextNode( "Matte(n) mit " ) );
					newTDText3_überschrift_ISSUE.appendChild( newTDText3_überschrift_ISSUE_Element );
					newTDText3_überschrift_ISSUE.appendChild( document.createTextNode( " ISSUE " ) );
					
					newTDText4_überschrift_ISSUE = document.createTextNode( "" );
					newTDText5_überschrift_ISSUE = document.createTextNode( "Hinweiß" );

					tr_überschrift_ISSUE = document.getElementById( "Tabellenkopf_ISSUE" ).appendChild( tr_überschrift_ISSUE );

					TAB_überschrift_ISSUE = document.getElementById( "Tabellenkopf_ISSUE" );

					td00_überschrift_ISSUE = TAB_überschrift_ISSUE.getElementsByTagName( "tr" )[0].appendChild( td0_überschrift_ISSUE );
					td11_überschrift_ISSUE = TAB_überschrift_ISSUE.getElementsByTagName( "tr" )[0].appendChild( td1_überschrift_ISSUE );
					td22_überschrift_ISSUE = TAB_überschrift_ISSUE.getElementsByTagName( "tr" )[0].appendChild( td2_überschrift_ISSUE );
					td33_überschrift_ISSUE = TAB_überschrift_ISSUE.getElementsByTagName( "tr" )[0].appendChild( td3_überschrift_ISSUE );
					td44_überschrift_ISSUE = TAB_überschrift_ISSUE.getElementsByTagName( "tr" )[0].appendChild( td4_überschrift_ISSUE );
					td55_überschrift_ISSUE = TAB_überschrift_ISSUE.getElementsByTagName( "tr" )[0].appendChild( td5_überschrift_ISSUE );

					td00_überschrift_ISSUE.width = "5px";
					td11_überschrift_ISSUE.width = "275px";
					td11_überschrift_ISSUE.className = "Unterschiede";
					td11_überschrift_ISSUE.align = "left";
					td22_überschrift_ISSUE.width = "65px";
					td22_überschrift_ISSUE.align = "center";
					td22_überschrift_ISSUE.className = "Unterschiede";
					td33_überschrift_ISSUE.width = "275px";
					td33_überschrift_ISSUE.className = "Unterschiede";
					td33_überschrift_ISSUE.align = "left";
					td44_überschrift_ISSUE.width = "65px";
					td44_überschrift_ISSUE.className = "Unterschiede";
					td44_überschrift_ISSUE.align = "center";
					td55_überschrift_ISSUE.width = "325px";
					td55_überschrift_ISSUE.className = "Unterschiede";
					td55_überschrift_ISSUE.align = "left";

					td00_überschrift_ISSUE.appendChild( newTDText0_überschrift_ISSUE );
					td11_überschrift_ISSUE.appendChild( newTDText1_überschrift_ISSUE );
					td22_überschrift_ISSUE.appendChild( newTDText2_überschrift_ISSUE );
					td33_überschrift_ISSUE.appendChild( newTDText3_überschrift_ISSUE );
					td44_überschrift_ISSUE.appendChild( newTDText4_überschrift_ISSUE );
					td55_überschrift_ISSUE.appendChild( newTDText5_überschrift_ISSUE );
					
					Schleife_Starten_ISSUEabfragen( ISSUE_Verlangt, ISSUE_Vorhanden, ISSUE_Hinweiss, ISSUE_Verlangt_Buchstaben, ISSUE_Vorhanden_Buchstaben );
				};

Hier sollen die Werte von der oben erzeugten Variable "out" verändert werden.

				function weiter_ISSUEabfrage( ISSUE_Verlangt, ISSUE_Vorhanden, ISSUE_Hinweiss, ISSUE_Verlangt_Buchstaben, ISSUE_Vorhanden_Buchstaben )
				{
					aktiv_ISSUE = window.setTimeout( Schleife_ISSUE_Tabelle_Erstellen, 0 );
					
					alert( "hallo" ); //--> Test ob hier was ankommt
					
					window.clearTimeout( aktiv_ISSUE );
				};

Hier entsteht die Dynamische Tabelle bzw. wird deren Inhalt mit meinen Teilvariablen gefüllt.

				function Schleife_ISSUE_Tabelle_Erstellen()
				{					
					var k = 1;

					for( var i = 0; i < ISSUE_Hinweiss.length; i++ )
					{
						var vorhanden = ISSUE_Verlangt[i];
						var neu = ISSUE_Vorhanden[i];
						var merkmal = ISSUE_Hinweiss[i];
						var vorhanden_Buchstaben = ISSUE_Verlangt_Buchstaben[i];
						var neu_Buchstaben = ISSUE_Vorhanden_Buchstaben[i];

						tr_ISSUE = document.createElement( "tr" );
						td0_ISSUE = document.createElement( "td" );
						td1_ISSUE = document.createElement( "td" );
						td2_ISSUE = document.createElement( "td" );
						td3_ISSUE = document.createElement( "td" );
						td4_ISSUE = document.createElement( "td" );
						td5_ISSUE = document.createElement( "td" );

						tr_ISSUE.height = "30px";

						tr_ISSUE = document.getElementById( "Tabellenkopf_ISSUE" ).appendChild( tr_ISSUE );

						TAB_ISSUE = document.getElementById( "Tabellenkopf_ISSUE" );

						td00_ISSUE = TAB_ISSUE.getElementsByTagName( "tr" )[k].appendChild( td0_ISSUE );
						td11_ISSUE = TAB_ISSUE.getElementsByTagName( "tr" )[k].appendChild( td1_ISSUE );
						td22_ISSUE = TAB_ISSUE.getElementsByTagName( "tr" )[k].appendChild( td2_ISSUE );
						td33_ISSUE = TAB_ISSUE.getElementsByTagName( "tr" )[k].appendChild( td3_ISSUE );
						td44_ISSUE = TAB_ISSUE.getElementsByTagName( "tr" )[k].appendChild( td4_ISSUE );
						td55_ISSUE = TAB_ISSUE.getElementsByTagName( "tr" )[k].appendChild( td5_ISSUE );

						newTDText0_ISSUE = document.createTextNode( "" );
						newTDText2_ISSUE = document.createTextNode( "-" );
						newTDText4_ISSUE = document.createTextNode( "" );
						newTDText5_ISSUE = document.createTextNode( merkmal + " - alt: " );
						
						input_ISSUE_1 = document.createElement( "input" );
						input_ISSUE_1.type = "button";
						input_ISSUE_1.value = vorhanden_Buchstaben;
						input_ISSUE_1.style.width = "40px";
						input_ISSUE_1.className = "STL_Meldungen_Button";
						
						input_ISSUE_2 = document.createElement( "input" );
						input_ISSUE_2.type = "button";
						input_ISSUE_2.value = neu_Buchstaben;
						input_ISSUE_2.style.width = "40px";
						input_ISSUE_2.className = "STL_Meldungen_Button";
						
						td00_ISSUE.appendChild( newTDText0_ISSUE );
						tr_ISSUE.getElementsByTagName( "td" )[1].innerHTML = vorhanden;
						td22_ISSUE.appendChild( newTDText2_ISSUE );
						tr_ISSUE.getElementsByTagName( "td" )[3].innerHTML = neu;
						td44_ISSUE.appendChild( newTDText4_ISSUE );
						td55_ISSUE.appendChild( newTDText5_ISSUE );
						td55_ISSUE.appendChild( input_ISSUE_1 );
						td55_ISSUE.appendChild( document.createTextNode( " / neu: " ) );
						td55_ISSUE.appendChild( input_ISSUE_2 );

						k++;
					};
				};

Hier soll ja die function weiter_ISSUEabfrage( ISSUE_Verlangt, ISSUE_Vorhanden, ISSUE_Hinweiss, ISSUE_Verlangt_Buchstaben, ISSUE_Vorhanden_Buchstaben ) aufgerufen werden.

				function Schleife_Starten_ISSUEabfragen( ISSUE_Verlangt, ISSUE_Vorhanden, ISSUE_Hinweiss, ISSUE_Verlangt_Buchstaben, ISSUE_Vorhanden_Buchstaben )
				{
					document.getElementById( "test" ).onclick = function() { weiter_ISSUEabfrage( ISSUE_Verlangt, ISSUE_Vorhanden, ISSUE_Hinweiss, ISSUE_Verlangt_Buchstaben, ISSUE_Vorhanden_Buchstaben ); };
					
					Schleife_ISSUE_Tabelle_Erstellen();
				};

Diese Art der "Warte-Schleife" habe ich schon einmal bereits erfolgreich erstellt. Und das habe ich dann 1:1 übernommen und dann abgeändert.

Das untere Bild zeigt, wie ich es aussieht und was ich damit bezwecken möchte.

http://img4.fotos-hochladen.net/uploads/dokument3soi3lvnmjz.jpg

Mein Ziel ist es, dass eine dynamische Tabelle erstellt wird, wo das Script so lange wartet, bis der Nutzer eines der Buttons bei "Hinweiß" anklickt. Und erst dann mit dem Script weiter verfährt, bis in der letzten Zeile eine Auswahl getroffen wurden ist.

Und das wollte ich über eine Art "Warte-Schleife" machen. Und wenn ich dann diese Buttons der einzelnen Zeilen angeklickt habe, dann soll der veränderte Wert (Variable "out") mittels return-Anweisung an die Ausgangsfunktion zurückgegeben werden.

PS: Der OK-Button diente nur zu Testzwecken.

LG Romero