romero: "Warte-Schleife" mit return-Werten

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

  1. Hallo,

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

    im Prinzip gern, aber bitte, bitte: In der Kürze liegt die Würze!
    Fünf bis zehn Bildschirmseiten voll Beispielcode liest kein Mensch, und beim Überfliegen habe ich auch den Eindruck, dass vieles davon gar nicht problemrelevant ist bzw. nur endlose Wiederholungen darstellt.

    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.

    Heißt das, du möchtest so nach und nach mehrere Werte zurückgeben?
    Wenn ja: Das geht so nicht. Eine Funktion liefert genau *einen* Wert als Ergebnis. Dieser eine Wert kann zwar auch ein Array oder Objekt sein, aber nur "en bloc". Leider kann ich in deinem Code keine Warteschleife erkennen, und auch kein wirklich aussagekräftiges return, also muss ich versuchen zu erahnen, was du wirklich willst.

    Vergiss eines nicht: Das return-Statement hat zwei wichtige Aufgaben. Zum einen wird mit return die Funktion sofort beendet, zum andern legt man mit dem return-Statement fest, _was_ als Funktionsergebnis zurückgegeben wird.

    Ich hoffe, du kannst etwas daraus machen ...

    Ciao,
     Martin

    --
    "Wie geht eigentlich dein neues Auto?"
    "Es geht nicht, es fährt!"
    "Äh, ja. Und wie fährt es?"
    "Och, es geht."
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo Martin,

      im Prinzip gern, aber bitte, bitte: In der Kürze liegt die Würze!

      Ok werde es versuchen :)

      Ich hatte so ein ähnliches Thema schonmal hier beschrieben. Da wurde mir ein Code gezeigt, wo eine Art "Warte-Schleife" war, welches erst nach Eingabe (Button drücken) des Nutzers weiterläuft.

      War in etwa wie folgt:

      Schleife_Starten( args );  
        
      function Schleife()  
      {  
       ...  
      };  
        
      function weiter( args )  
      {  
       aktiv = setTimeout( Schleife,0 );  
       //--> Inhalt  
       window.clearTimeout( aktiv );  
       //--> weiter Funktionen  
      };  
        
      function Schleife_Starten( args )  
      {  
       document.getElementById( "test" ).onclick = function() { weiter( args ); };  
       Schleife();  
      };
      

      So war die im groben aufgebaut. Und das funktioniert auch. Das Script "läuft" erst weiter, wenn da nach einer Auswahl und der OK-Button gedrückt wurde.

      Heißt das, du möchtest so nach und nach mehrere Werte zurückgeben?
      Wenn ja: Das geht so nicht. Eine Funktion liefert genau *einen* Wert als Ergebnis. Dieser eine Wert kann zwar auch ein Array oder Objekt sein, aber nur "en bloc". Leider kann ich in deinem Code keine Warteschleife erkennen, und auch kein wirklich aussagekräftiges return, also muss ich versuchen zu erahnen, was du wirklich willst.

      Nein ich möchte nicht zu jeder Zeile ein return haben sondern den bisherigen return-Wert, also eine Variable (array) so ändern (also die einzelnen Teile), dass ich dann dieses Array weiterhin verwenden kann.

      Sprich: jetzt bestand das Array aus, sagen wir, 10 Teilen (Array( "Teil1", "Teil2", ... , "Teil10" ).

      Nun möchte ich aber, weil ich bemerkt habe, dass sich Teil1 und Teil5 geändert haben (siehe Bild), mittels Buttons zu jedem Teil, die Teile ändern. Sagen wir von Teil1 auf Teil11 und Teil5 auf Teil55. Und das soll halt mittels den Buttons passieren. Und diese dynamische Tabelle soll halt so lange gezeigt werden, bis der Nutzer zu jeder Zeile (Änderung der Teile) einen Button gedrückt hat, egal welcher. Und erst danach mit dem eigentlichen Script weiter machen.

      Und da ist mein Problem.
      Also das Klicken des Buttons und das Weitermachen ist an sich ja nicht das Problem, sondern dass Starten der Ausgangsfunktion, dann das Aufrufen einer 2. Unterfunktion, dass dadurch entstehende zurückgebende Array so verändert zurückgeben (mittels Buttons), dass damit weiter verfahren werden kann.

      Und da dachte ich halt an die Art "Warte-Schleife" und das er so lange wartet, bis die letzte Zeile "beklickt" worden ist.

      LG Romero

      PS: hoffe du konntest mir folgen :/

    2. Hallo Martin,

      hier der Link dazu, wo diese Sache mit der "Warte-Schleife" schonmal zur Sprache kam:

      http://forum.de.selfhtml.org/archiv/2011/7/t206186/

      1. Hallo romero,

        hier der Link dazu, wo diese Sache mit der "Warte-Schleife" schonmal zur Sprache kam:

        http://forum.de.selfhtml.org/archiv/2011/7/t206186/

        schön, dass du den Thread rausgesucht hast. Ich hätte jetzt genau das gleiche geantwortet.

        Gruß, Jürgen

        1. Hallo Jürgen,

          schön, dass du den Thread rausgesucht hast. Ich hätte jetzt genau das gleiche geantwortet.

          lern halt doch noch was dazu in meinem Alter.

          Aber du weißt auch nicht wie ich es bewerkstelligen kann oder?

          LG Romero

          1. Hallo romero,

            Aber du weißt auch nicht wie ich es bewerkstelligen kann oder?

            auch ich habe weder dein Problem noch deinen Code wirklich verstanden. Reduziere den Code auf das Wesentliche, dann sehen wir weiter.

            Und bedenke: Javascript kann nicht warten, außer auf alert, confirm und auf Events.

            Gruß, Jürgen

            1. Hallo Jürgen,

              ok ich versuche es mal mit einfachen Worten mich auszudrücken.

              Hier erstmal der (vereinfachte ) Code:

              		function Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung )  
              		{  
              			for( i = 0; i < infile.length; i++ )  
              			{  
              				out = out.concat( findInList( infile[i] ) );  
              			};  
                
              			//--> Hier soll diese "Warte-Schleife" hin  
                
              			Schleife_Starten( args );  
                
              			function Schleife()  
              			{  
              				//--> dynamisches Befüllen der Tabelle  
              			};  
                
              			function Weiter_Machen( args )  
              			{  
              				Aktive_Schleife = setTimeout( Schleife, 0);  
                
              				... //--> Hier soll der Inhalt des Array()'s out, pro Zeile, verändert werden  
                
              				window.clearTimeout( Aktive_Schleife );  
              			};  
                
              			function Schleife_Starten( args )  
              			{  
              				document.getElementById( ??? ).onclick = function() { Weiter_Machen( args ); };  
                
              				Schleife();  
              			};  
                
              			return out;  
              			  
              			function findInList( s )  
              			{  
              				//--> Hier wird das Array() out erstellt  
              				return out;  
              			};  
              		};
              

              So das war zum vereinfachtem Grundgerüst.
              Meine Zielsetzung ist es, eine Tabelle dynamisch zu erstellen, wo in jeder Zeile 2 Buttons sind (z.B. Ja / Nein). Das Script bleibt dann so lange an dieser Stelle stehen, bis in der letzten Zeile eine Auswahl getroffen wurde.

              Durch die Auswahl (Ja / Nein ) werden einzelne Teile des Array()'s out verändert und dann wieder in das Array() out zurückgegeben bzw. weitere Array()'s erstellt.

              Nachdem halt in der letzten Zeile eine Veränderung vorgenommen wurde, soll das Script weiter laufen.

              Und genau da ist mein Problem. Ich weiß jetzt nicht wo ich ansetzen soll bzw. wie ich die Buttons mit Befehlen (onclick's) versetzen kann, dass dann auch zu jeder Zeile die entsprechende Veränderung vorgenommen wird und wie das Script dann weiter läuft.

              PS: hoffe ich konnte es nun für euch verständlicher erklären.

              LG Romero

              1. Nachdem halt in der letzten Zeile eine Veränderung vorgenommen wurde, soll das Script weiter laufen.

                Und genau da ist mein Problem. Ich weiß jetzt nicht wo ich ansetzen soll bzw. wie ich die Buttons mit Befehlen (onclick's) versetzen kann, dass dann auch zu jeder Zeile die entsprechende Veränderung vorgenommen wird und wie das Script dann weiter läuft.

                Dazu musst du alles was bisher den Returncode ausgewertet hat in eine extra Funktion packen.
                Diese Funktion rufst du mit deinem bisherigen Returncode als Parameter auf, wenn alle erforderlichen Buttons gedrückt wurden.
                Also im onclick-Handler änderst du deine Variable out, sorgst dafür dass die Tabelle angepasst wird und wenn alle Zeilen abgearbeitet wurden rufst du die Funktion, welche deine Variable out verarbeitet.

                1. Dazu musst du alles was bisher den Returncode ausgewertet hat in eine extra Funktion packen.
                  Diese Funktion rufst du mit deinem bisherigen Returncode als Parameter auf, wenn alle erforderlichen Buttons gedrückt wurden.
                  Also im onclick-Handler änderst du deine Variable out, sorgst dafür dass die Tabelle angepasst wird und wenn alle Zeilen abgearbeitet wurden rufst du die Funktion, welche deine Variable out verarbeitet.

                  Das heißt, damit ich es richtig verstehe, packe die "Warte-Schleife" in eine separate Funktion packen, mit der Variable (Array) out und da mittels dieser Schleife die Werte von out abändern?

                  Könntest, wenn es für dich keine zu großen Umstände macht, einen kleinen vereinfachten Codeauszug schreiben? Damit ich sehe wo du das dann hinpackst.

                  LG Romero

                  1. Das heißt, damit ich es richtig verstehe, packe die "Warte-Schleife" in eine separate Funktion packen, mit der Variable (Array) out und da mittels dieser Schleife die Werte von out abändern?

                    Es gibt keine "Warte-Schleife".

                    Du hattest vorher irgendwo stehen

                    var ret = Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung );
                    // code der was mit ret macht

                    Den code der was mit ret macht packst du in eine Funktion.

                    function callback(ret)
                    {
                      // code der was mit ret macht
                    }

                    und diese Funktion rufst du im onclick auf, wenn alle Zeilen abgearbeitet wurden und übergibst ihr deine out-Variable.

                    1. Hallo,

                      Es gibt keine "Warte-Schleife".

                      Das weiß ich ja, deshalb steht das Ganze auch in "".

                      Du hattest vorher irgendwo stehen

                      var ret = Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung );
                      // code der was mit ret macht

                      Den code der was mit ret macht packst du in eine Funktion.

                      function callback(ret)
                      {
                        // code der was mit ret macht
                      }

                      und diese Funktion rufst du im onclick auf, wenn alle Zeilen abgearbeitet wurden und übergibst ihr deine out-Variable.

                      Nein, genau das ist nicht die Richtung die ich brauche.
                      Ich brauche eine "Warte-Schleife" (auch wenn es die nicht gibt), die das Script ersteinmal anhält, dann werden für jede einzelne Zeile 2 Buttons zum Drücken zur Verfügung gestellt, die Bewirken, dass ich Teile in einem Array() änderen kann (oder auch nicht - aber es muss was gedrückt werden).

                      Und erst wenn ich in jeder Zeile was gedrückt habe und somit alles abgearbeitet habe, läuft das Script weiter. Ich dachte halt an die "Warte-Schleifen-Funktionen", welche mir damals Jürgen gegeben hat, die man dafür halt, denk ich, abändern müsste.

                      Und da müsste eine Schleife sein, die überprüft, wieviele Zeilen da sind und wieviele Buttons ich gedrückt habe. Und wenn alles gedrückt wurde und somit eine Entscheidung des Nutzers getroffen wurde, gehts weiter. Und nicht, wenn alles da ist, ein Button drücken und dann das Array out zu verändern.
                      Halt so wie ich es oben beschrieben habe mit den verkürztem Code der "Warte-Schleife".

                      LG Romero

                      1. Nein, genau das ist nicht die Richtung die ich brauche.

                        Aber die einzige in die es geht.

                        dann werden für jede einzelne Zeile 2 Buttons zum Drücken zur Verfügung gestellt, die Bewirken, dass ich Teile in einem Array() änderen kann (oder auch nicht - aber es muss was gedrückt werden).

                        Das ist ja OK. In jedem onklick-Handler änderst du dein Array. Dann musst du die Zeile aus der Tabelle entfernen oder die Tabelle entfernen und mit einer Zeile weniger neu aufbauen.

                        Und erst wenn ich in jeder Zeile was gedrückt habe und somit alles abgearbeitet habe,

                        Ja, der letzte onklick-Handler ruft die callback-Funktion der du das vollständige out-Array übergibst.

                        Und da müsste eine Schleife sein, die überprüft, wieviele Zeilen da sind und wieviele Buttons ich gedrückt habe.

                        Das Wissen ist ja da, du hast die Tabelle ja auch aufbauen können, also weisst du, wieviele Zeilen es gibt.

                        Und wenn alles gedrückt wurde und somit eine Entscheidung des Nutzers getroffen wurde, gehts weiter.

                        Genau, wenn in der letzten verbleibenden Zeile ein Button gedrückt wird arbeitest du den Code der Callbackfunktion ab.

                        1. Nein, genau das ist nicht die Richtung die ich brauche.
                          Aber die einzige in die es geht.

                          dann werden für jede einzelne Zeile 2 Buttons zum Drücken zur Verfügung gestellt, die Bewirken, dass ich Teile in einem Array() änderen kann (oder auch nicht - aber es muss was gedrückt werden).
                          Das ist ja OK. In jedem onklick-Handler änderst du dein Array. Dann musst du die Zeile aus der Tabelle entfernen oder die Tabelle entfernen und mit einer Zeile weniger neu aufbauen.

                          Und erst wenn ich in jeder Zeile was gedrückt habe und somit alles abgearbeitet habe,
                          Ja, der letzte onklick-Handler ruft die callback-Funktion der du das vollständige out-Array übergibst.

                          Und da müsste eine Schleife sein, die überprüft, wieviele Zeilen da sind und wieviele Buttons ich gedrückt habe.
                          Das Wissen ist ja da, du hast die Tabelle ja auch aufbauen können, also weisst du, wieviele Zeilen es gibt.

                          Und wenn alles gedrückt wurde und somit eine Entscheidung des Nutzers getroffen wurde, gehts weiter.
                          Genau, wenn in der letzten verbleibenden Zeile ein Button gedrückt wird arbeitest du den Code der Callbackfunktion ab.

                          Ok ich versuch es mal zusammenzufassen bzw. dir zu folgen:

                          Das ist ja die Ausgangsfunktion:

                          		function Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung )  
                          		{			  
                          			for( i = 0; i < infile.length; i++ )  
                          			{  
                          				out = out.concat( findInList( infile[i] ) );  
                          			};  
                            
                          			//--> hier ist dann der Aufbau der Tabelle drin, hab ich aber mal weggelassen  
                            
                          			return out;  
                          			  
                          			function findInList( s )  
                          			{  
                          				return out;  
                          			};  
                          		};
                          

                          Und das Ganze muss ich nun wie folgt umbauen:

                          Das was bei dieser Funktion function Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung ) zurückgegeben wird, nehme ich in eine neue Funktion.

                          var ret = function Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung );
                          var ret = function irgendwas( ret );

                          In dieser function irgendwas( ret ) baue ich nun die Tabelle aus und gebe jeder Zeile ein Onclick-handler mittels einer Schleife. Dadurch erzeuge ich Teil-Array's die dann am Ende das out-Array bilden?

                          Sorry aber bräuchte mal ein Code-Auszug wie du es meinst. Also einen Art Test-Code.

                          LG Romero

                          PS: und vielen Dank für dein Bemühen mir zu helfen

                          1. <html>  
                            <head>  
                            <title></title>  
                            </head>  
                            <body>  
                            <script>  
                              var daten = [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}];  
                              function cb(ret) {  
                                alert("gewählt wurde: " + ret[0] + " - " + ret[1] + " - " + ret[2]);  
                              }  
                              function bsp(daten, cb) {  
                                var out = [];  
                                var tab = "<table>";  
                                for (var i = 0; i < daten.length; ++i) {  
                                  tab += "<tr>";  
                                  tab += "<td><button type='button'>" + daten[i].x + "</button></td>";  
                                  tab += "<td><button type='button'>" + daten[i].y + "</button></td>";  
                                  tab += "</tr>";  
                                }  
                                tab += "</table>";  
                                document.body.innerHTML = tab;  
                              
                                var table = document.body.firstChild;  
                              
                                function getClickHandler(i) {  
                                  return function() {  
                                    out[i] = this.innerHTML;  
                                    table.deleteRow(this.parentNode.parentNode.rowIndex);  
                                    if (!table.rows.length) {  
                                      document.body.innerHTML = "";  
                                      cb(out);  
                                    }  
                                  };  
                                }  
                              
                                for (var i = 0; i < daten.length; ++i) {  
                                  table.rows[i].cells[0].firstChild.onclick = table.rows[i].cells[1].firstChild.onclick = getClickHandler(i);  
                                }  
                              }  
                              bsp(daten, cb);  
                            </script>  
                            </body>  
                            </html>
                            

                            Aber vorsicht, das ist schnell zusammengeschustert und soll nur das Prinzip verdeutlichen.

                            1. Hallo unknown,

                              Aber vorsicht, das ist schnell zusammengeschustert und soll nur das Prinzip verdeutlichen.

                              ich habe mal dein Code-Auszug übernommen bzw. es für meine Zwecke abgeändert. Folgendes habe ich zustande bekommen.

                              		function Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung )  
                              		{  
                              			//--> hier wird das out erstellt  
                                
                              			for( i = 0; i < infile.length; i++ )  
                              			{  
                              				out = out.concat( findInList( infile[i] ) );  
                              			};  
                                
                              			function callback( out )  
                              			{  
                              				alert( "gucken" );  
                              			};  
                                
                              			function Tabellenaufbau( out, callback, ISSUE )  
                              			{  
                              				for( var i = 0; i < ISSUE.length; i++ )  
                              				{  
                              					ISSUE_Verlangt.push( ISSUE[i].split( "|" )[0] );					  
                              					ISSUE_Vorhanden.push( ISSUE[i].split( "|" )[1] );  
                              					ISSUE_Hinweis.push( ISSUE[i].split( "|" )[2] );  
                              					ISSUE_Verlangt_Buchstaben.push( ISSUE[i].split( "|" )[3] );  
                              					ISSUE_Vorhanden_Buchstaben.push( ISSUE[i].split( "|" )[4] );  
                              				};  
                              				  
                              				if( ISSUE.length > 0 )  
                              				{  
                              					msg( '<br><b>--- ISSUE - Änderungen ---</b><br><br>' );  
                              					  
                              					//--> Beginn es Tabellenaufbaus  
                                
                              					table_ISSUE = document.createElement( "table" );  
                              					...  
                              					};  
                              				};  
                                
                              				function ClickHandler( i )  
                              				{  
                              					return function()  
                              					{  
                              						alert( "na gucke an, das klappt" );  
                              						  
                              						var ISSUE_Liste = document.getElementById( "Tabellenkopf_ISSUE" );  
                              						var ISSUE_Liste_TR = ISSUE_Liste.getElementsByTagName( 'tr' );  
                              						  
                              						alert( ISSUE_Liste_TR.length );  
                              						  
                              						if( !ISSUE_Liste_TR.length )  
                              						{  
                              							alert( "servus" );  
                              							callback( out );  
                              						};  
                              					};  
                              				};  
                              				  
                              				var ISSUE_Liste = document.getElementById( "Tabellenkopf_ISSUE" );  
                              				var ISSUE_Liste_TR = ISSUE_Liste.getElementsByTagName( 'tr' );  
                              				var j = 1;  
                              				  
                              				for( var i = 0; i < ISSUE.length; ++i )  
                              				{  
                              					ISSUE_Liste_TR[1].getElementsByTagName( 'input' )[0].onclick = ClickHandler( i );  
                              					ISSUE_Liste_TR[1].getElementsByTagName( 'input' )[1].onclick = ClickHandler( i );  
                              					j++;  
                              				};  
                              			};  
                              			  
                              			Tabellenaufbau( out, callback, ISSUE );  
                              			  
                              			return out;  
                              		};  
                              	};
                              

                              So und nun zu meinem Problem. Das Script stoppt nicht, sondern läuft wie gehabt weiter. Ich verstehe nun das Prinzip von dir, unknown. Du lässt das Script erst dann weiter laufen, wenn alle Zeilen bis auf die Letzte gelöscht sind und ich da eine Entscheidung getroffen habe.

                              Aber wie bekomm ich in der Funktion callback() die Variable out zurück in die Funktion Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung )? Weil von da aus übergebe ich ja mittels return out, das out wieder an die vorhergehende Funktion zurück.

                              Ich habe zwar mittels alert() einige "Stopper" eingebaut um zu schauen ob er bis dahin "kommt", aber bis dahin kommt das Script nicht, sondern fährt wie gehabt durch.

                              LG Romero

                              1. So und nun zu meinem Problem. Das Script stoppt nicht, sondern läuft wie gehabt weiter.

                                Das ist gut! Wenn es stoppen würde, hättest du einen Fehler in der Fehlerconsole!

                                Du lässt das Script erst dann weiter laufen, wenn alle Zeilen bis auf die Letzte gelöscht sind und ich da eine Entscheidung getroffen habe.

                                Nein, der letzte click-Handler ruft eine (zusätzliche) Funktion auf!

                                Aber wie bekomm ich in der Funktion callback() die Variable out zurück in die Funktion Ueberpruefen_ob_Daten_vorhanden( list, infile, list_ISSUE_Pruefung )?

                                Überhaupt nicht, die Funktion Ueberpruefen_ob_Daten_vorhanden ist zu diesem Zeitpunkt schon abgearbeitet, du bist im Eventhandler.

                                Weil von da aus übergebe ich ja mittels return out, das out wieder an die vorhergehende Funktion zurück.

                                Nein, "der Rest" deiner "vorhergehenden Funktion", ist ja jetzt deine Funktion callback()

                                Nochmal kurz versucht zu erklären:
                                * JS wird in EINEM Thread abgearbeitet (mitlerweile ist das nicht mehr ganz richtig, aber der Normalfall)
                                * Angefangen beim Parsen der Seite wird jedes Script welches ins Dokument eingefügt wurde eins nach dem anderen vollständig abgearbeitet.
                                * Dann kommen nur noch Eventhandler an die Reihe (oder Funktionen die über setTimeout gestartet wurden), die auch vollständig abgearbeitet werden.
                                * Wenn eines dieser Codestücke in diesem einen Thread zu lange laufen (z.B. wegen einer langen Schleife) kommt in den meisten Browsern eine Warnung.

                                1. Hy unknown,

                                  erstmal Danke, dass du versucht, mir zu helfen. Aber irgendwie bin ich jetzt ratloser als vorher.

                                  Ich habe dein Code in meins übernommen, habe auch die Funktion Ueberpruefen_ob_Daten_vorhanden in meine Callback-Funktion geschrieben. Aber irgendwie komme ich dait nicht ans Ziel.

                                  Wie kann ich aber dann das Array() "out" für meine anderen weiteren Funktionen benutzen?

                                  Ich meine, wenn ich die einzelnen Zeilen "durchklickere" und sie dabei aus der Tabelle lösche bis nur noch die letzte Zeile da ist, womit ich dann die Callback-Funktion aufrufe, wie erreiche ich dann, dass in der Callback-Funktion veränderte Array() "out" für die anderen Funktionen zur Verfügung stelle?

                                  Müsste ich dann die anderen Funktionen in diese Callback-Funktion mit deklarieren?
                                  Also wenn ich die letzte Zeile geklickt habe, führt er die Callback-Funktion aus und verändert die vorher neu definierten Teile des Array()'s "out" und dann müssten die anderen Funktionen aus dieser Callback-Funktion aufgerufen werden, oder?

                                  LG Romero

                                  1. Wie kann ich aber dann das Array() "out" für meine anderen weiteren Funktionen benutzen?

                                    out wird dem Callback als Parameter übergeben, damit ist dein Array innerhalb des Callbacks verfügbar, wie vorher als Returnwert in deiner aufrufenden Funktion. Irgendwie verstehe ich das Problem nicht ganz, was du damit hast.

                                    Ich meine, wenn ich die einzelnen Zeilen "durchklickere" und sie dabei aus der Tabelle lösche bis nur noch die letzte Zeile da ist, womit ich dann die Callback-Funktion aufrufe, wie erreiche ich dann, dass in der Callback-Funktion veränderte Array() "out" für die anderen Funktionen zur Verfügung stelle?

                                    Innerhalb vom Callback ist dein Array eine Variable wie jede andere.

                                    Also wenn ich die letzte Zeile geklickt habe, führt er die Callback-Funktion aus ... und dann müssten die anderen Funktionen aus dieser Callback-Funktion aufgerufen werden, oder?

                                    Ja.

                                    1. Hallo unknown und alle anderen Mithelfenden und Lesern,

                                      habe mir mit Hilfe der oberen Beiträge mir was zusammengebastelt.
                                      Folgender Code-Auszug ist dabei entstanden.

                                      			ISSUE_Ueberpruefung( list_A380_Frankreich_ohne_BTH, infile_unique_gesamt_A380_Frankreich_ohne_BTH, list_A380_Frankreich_ohne_BTH_ISSUE_Pruefung )  
                                      			  
                                      			function ISSUE_Ueberpruefung( list, infile, list_ISSUE_Pruefung )  
                                      			{  
                                      				...  
                                        
                                      				//--> Start des Tabellenaufbaus  
                                      				if( ISSUE.length > 0 )  
                                      				{  
                                      					msg( '<br><b>--- ISSUE - Änderungen ---</b><br><br>' );  
                                      					  
                                      					table_ISSUE = document.createElement( "table" );  
                                      					};  
                                      				};  
                                      				  
                                      				msg( "<br>" );  
                                        
                                      				//--> hier das Konstrukt, um die einzelnen Button anzusprechen  
                                      				  
                                      				var ISSUE_Liste = document.getElementById( "Tabellenkopf_ISSUE" );  
                                      				var ISSUE_Liste_TR = ISSUE_Liste.getElementsByTagName( "tr" );  
                                      				  
                                      				for( var i = 1; i < ISSUE_Liste_TR.length; i++ )  
                                      				{  
                                      					var ISSUE_Liste_INPUT = ISSUE_Liste_TR[i];  
                                      					ISSUE_Liste_INPUT.getElementsByTagName( "input" )[0].onclick = function(i)  
                                      					{  
                                      						return function()  
                                      						{  
                                      							ISSUE_Liste.getElementsByTagName( "tr" )[i].style.display = "none";	  
                                      						};  
                                      					}(i);  
                                      					  
                                      					ISSUE_Liste_INPUT.getElementsByTagName( "input" )[1].onclick = function(i)  
                                      					{  
                                      						return function()  
                                      						{  
                                      							ISSUE_Liste.getElementsByTagName( "tr" )[i].style.display = "none";	  
                                      						};  
                                      					}(i);  
                                      				};  
                                      			};
                                      

                                      So das Ansprechen der einzelnen Button in jeder Zeile klappt wunderbar. Nun meine Frage: Wie kann ich aber in den einzelnen return function(), Variablen so verändern, dass ich sie später wieder verwenden kann? Also Variablen in dieses Konstrukt übergeben um damit zu arbeiten?

                                      Denn ich möchte, dass in jeder dieser Funktionen eine Funktion aufgerufen wird, diverse Variablen übergeben werden, die ich dann verändere und dich ich dann in einem Array() gespeichert werden. Oder im Allgemeinen gesagt, wie kann ich da eine globale Variable (oder Array) verändern?

                                      Denn wenn ich die einzelnen Spalten ausblende und ich dann eine Schleife mir bastle, wo ich dann abfrage, welche Zeilen ausgeblendet sind (und sie dann lösche) und wenn alles gelöscht ist, soll er mit dem Script fortfahren, aber mit den veränderten Daten.

                                      LG Romero

                                      1. Wie kann ich aber in den einzelnen return function(), Variablen so verändern, dass ich sie später wieder verwenden kann?

                                        Auf alle Variablen die innerhalb des Scopes der deine Clousure erzeugt zugreifbar sind hast du Zugriff.
                                        Du kannst also auf alle Variablen aus ISSUE_Ueberpruefung einfach zugreifen. z.B. auf list, infile, und list_ISSUE_Pruefung.

                                        Also Variablen in dieses Konstrukt übergeben um damit zu arbeiten?

                                        Aufpassen musst du mit Variablen die nach Erzeugung der Clousure noch verändert werden, du aber eigentlich den Wert zum Zeitpunkt der Erzeugung benötigst. Diesen musst du in einer extra Variablen sichern, die sich nicht mehr ändert.
                                        Wie du das mit der Variablen i aus der for-Schleife gemacht hast. Die hast du in dem Argument i in der anonymen Funktion gespeichert.

                                        Oder im Allgemeinen gesagt, wie kann ich da eine globale Variable (oder Array) verändern?

                                        Auf globale Variablen kann man von überall zugreifen, das macht sie ja so gefährlich.

                                        1. Hallo unknown,

                                          Wie kann ich aber in den einzelnen return function(), Variablen so verändern, dass ich sie später wieder verwenden kann?
                                          Auf alle Variablen die innerhalb des Scopes der deine Clousure erzeugt zugreifbar sind hast du Zugriff.
                                          Du kannst also auf alle Variablen aus ISSUE_Ueberpruefung einfach zugreifen. z.B. auf list, infile, und list_ISSUE_Pruefung.

                                          Also Variablen in dieses Konstrukt übergeben um damit zu arbeiten?
                                          Aufpassen musst du mit Variablen die nach Erzeugung der Clousure noch verändert werden, du aber eigentlich den Wert zum Zeitpunkt der Erzeugung benötigst. Diesen musst du in einer extra Variablen sichern, die sich nicht mehr ändert.
                                          Wie du das mit der Variablen i aus der for-Schleife gemacht hast. Die hast du in dem Argument i in der anonymen Funktion gespeichert.

                                          Oder im Allgemeinen gesagt, wie kann ich da eine globale Variable (oder Array) verändern?
                                          Auf globale Variablen kann man von überall zugreifen, das macht sie ja so gefährlich.

                                          vielen herzlichen Dank, du hast mir sehr weiter geholfen.

                                          Ich habe es nun geschafft, die Ausgangsvariablen (das Array() ) so zu verändern (mittels der Button), dass das Script nach drücken eines Button in der letzten Zeile mit den geänderten Werten weiterläuft.

                                          Hier, für alle die es interessiert, der Code-Auszug:

                                          			ISSUE_Ueberpruefung( list_A380_Frankreich_ohne_BTH, infile_unique_gesamt_A380_Frankreich_ohne_BTH, list_A380_Frankreich_ohne_BTH_ISSUE_Pruefung )  
                                          			  
                                          			function ISSUE_Ueberpruefung( list, infile, list_ISSUE_Pruefung )  
                                          			{  
                                          				//-----------------------------------------------//  
                                          				//-- Tabellenaufbau für die ISSUE-Unterschiede --//  
                                          				//-----------------------------------------------//  
                                          				  
                                          				if( ISSUE.length > 0 )  
                                          				{  
                                          					...  
                                          				};  
                                          				  
                                          				msg( "<br>" );  
                                          				  
                                          				var ISSUE_Liste = document.getElementById( "Tabellenkopf_ISSUE" );  
                                          				var ISSUE_Liste_TR = ISSUE_Liste.getElementsByTagName( "tr" );  
                                            
                                          				//----------------------------------------//  
                                          				//-- Funktion für den einzelnen Button, --//  
                                          				//-- Übergabe des ÄNDERUNGS-ISSUE sowie --//  
                                          				//-- Änderung der Teile im Array() und  --//  
                                          				//-- Aufrufen der restlichen Funktionen --//  
                                          				//----------------------------------------//  
                                          				  
                                          				function test( ISSUE_Buchstabe, ISSUE, infile_unique_gesamt_A380_Frankreich_ohne_BTH, counter )  
                                          				{					  
                                          					return function()  
                                          					{  
                                          						ISSUE_Liste.getElementsByTagName( "tr" )[counter+1].style.display = "none";  
                                          						for( var i = 0; i < infile_unique_gesamt_A380_Frankreich_ohne_BTH.length; i++ )  
                                          						{  
                                          							if( ISSUE[counter].substr( 0, 14 ) == infile_unique_gesamt_A380_Frankreich_ohne_BTH[i].substr( 0, 14 ) )  
                                          							{  
                                          								infile_unique_gesamt_A380_Frankreich_ohne_BTH.splice( i, 1, infile_unique_gesamt_A380_Frankreich_ohne_BTH[i].substr( 0, 14 ) + ISSUE_Buchstabe );  
                                          							};  
                                          						};  
                                          					  
                                          						var z = 0;  
                                          						  
                                          						for( var k = 0; k < ISSUE_Liste_TR.length; k++ ) { if( ISSUE_Liste.getElementsByTagName( "tr" )[k].style.display == "none" ) { z++; }; };  
                                          						  
                                          						var t = parseInt( ISSUE_Liste_TR.length ) - parseInt( z );  
                                            
                                          						if( t == 1 )  
                                          						{  
                                          							for( var i = 0; i < document.getElementById( "msgs" ).childNodes.length; i++ ) { if( document.getElementById( "msgs" ).childNodes[i].nodeName == "TABLE" ) { document.getElementById( "msgs" ).removeChild( document.getElementById( "msgs" ).childNodes[i] ) }; };  
                                          							document.getElementById( "msgs" ).innerHTML = "";  
                                          							  
                                          							//------------------------------------------//  
                                          							//-- Weiterführen der weiteren Funktionen --//							  
                                          							//------------------------------------------//  
                                          							  
                                          							out_A380_Frankreich_ohne_BTH = Ueberpruefen_ob_Daten_vorhanden( list_A380_Frankreich_ohne_BTH, infile_unique_gesamt_A380_Frankreich_ohne_BTH );  
                                          			  
                                          							//--> Dateien und Infile vergleichen, sowie deren Anzahl anhängen  
                                            
                                          							save_A380_Frankreich_ohne_BTH( out_A380_Frankreich_ohne_BTH, anzahl_gesamt_A380_Frankreich_ohne_BTH, infile_unique_gesamt_A380_Frankreich_ohne_BTH, excel_infile_A380_Frankreich_ohne_BTH, starttime );  
                                            
                                          							document.getElementById( "STL_Meldungen_Überschreiben" ).style.display = "inline";  
                                          							document.getElementById( "STL_Meldungen_Alt_Text_Links" ).style.display = "inline";  
                                          							document.getElementById( "STL_Meldungen_Alt_Text" ).style.display = "none";	  
                                          						};  
                                          					};  
                                          				};  
                                          				  
                                          				//-----------------------------------------------------------//  
                                          				//-- Zeilenlänge bestimmen und Button-Funktion deklarieren --//  
                                          				//-----------------------------------------------------------//  
                                          				  
                                          				for( var i = 1, j = 0; i < ISSUE_Liste_TR.length; i++, j++ )  
                                          				{  
                                          					var ISSUE_Liste_INPUT = ISSUE_Liste_TR[i];  
                                          					  
                                          					ISSUE_Liste_INPUT.getElementsByTagName( "input" )[0].onclick = test( ISSUE_Verlangt_Buchstaben[j], ISSUE, infile_unique_gesamt_A380_Frankreich_ohne_BTH, j );					  
                                          					ISSUE_Liste_INPUT.getElementsByTagName( "input" )[1].onclick = test( ISSUE_Vorhanden_Buchstaben[j], ISSUE, infile_unique_gesamt_A380_Frankreich_ohne_BTH, j );  
                                          				};  
                                          			};
                                          

                                          Um es kurz zu beschreiben. Ich übergebe, nachdem ich die onclicks für die Button definiert habe, die Variablen, welche ich benötige in eine weitere Funktion ( test(var1, var2, ...) ). in der packe ich ein return function, welches die Hauptaufgabe hat, für jedes gedrückte Button die Ausgangsvariable (hier: infile_unique_gesamt_A380_Frankreich_ohne_BTH ) so zu verändern, damit das für mich richtige Resultat, sprich den Kennbuchstaben, für die nächsten Funktionen rauskommt.

                                          Und das passiert so lange, bis alle Zeilen (da wo Buttons versteckt sind) display = "none" gesetzt sind bzw. am Ende dadurch die Tabelle wieder rausgelöscht wird.

                                          LG Romero

                      2. Hallo romero,

                        ... die das Script ersteinmal anhält, ...

                        ... läuft das Script weiter. ...

                        diese Begriffe musst du aus deinem Vokabular streichen. Vergiss sie, sie spielen bei Javascript keine Rolle.

                        Was du brauchst, sind Funktionen, die als Eventhandler aufgerufen werden, z. B. das, was am Anfang gemacht werden soll, als window.onload, das was nach Benutzeraktion gemacht werden soll, als <element>.onclick. Diese Eventhandler laufen, bis sie fertig sind und übergeben dann die Kontrolle zurück an den Browser.

                        SetTimeout startet zeitverzögert einen neuen Programmablaufszweig. Das macht man, um etwas verzögert zu starten. Da dieser Zweig frühestens dann gestartet wird, wenn der vorherige fertig ist, nutze ich in meinem Beispiel setTimeout nur, um dem Browser die Möglichkeit zu geben, DOM-Manipulationen auch anzeigen zu können. Ich sehe nicht, warum du setTimeout brauchst.

                        Gruß, Jürgen

        2. http://forum.de.selfhtml.org/archiv/2011/7/t206186/

          ich habe das alte Beispiel wieder hochgeladen.

          Gruß, Jürgen

  2. Hallo,

    document.createTextNode( "Hinweiß" );

    Das ist, laut Bild offensichtlich ein "Hinschwarz", empfehlen würde ich einen "Hinrot", das ist auffälliger.

    Gruß
    Kalk

    1. document.createTextNode( "Hinweiß" );

      Das ist, laut Bild offensichtlich ein "Hinschwarz", empfehlen würde ich einen "Hinrot", das ist auffälliger.

      Hä? kannst du das mal erklären? :/

      1. Om nah hoo pez nyeetz, romero!

        document.createTextNode( "Hinweiß" );

        Das ist, laut Bild offensichtlich ein "Hinschwarz", empfehlen würde ich einen "Hinrot", das ist auffälliger.

        Hinweis - wegen hinweisen. Ausweis - wegen ausweisen. weiß - einen Raum weißen. Lediglich die Farbe wird mit ß geschrieben. Rot ist auffälliger als weiß.

        Matthias

        --
        1/z ist kein Blatt Papier.

        1. Hallo,

          Hinweis - wegen hinweisen. Ausweis - wegen ausweisen. weiß - einen Raum weißen. Lediglich die Farbe wird mit ß geschrieben.

          und die Singular-Präsens-Formen von "wissen".

          Rot ist auffälliger als weiß.

          Wer weiß ... ;-)

          Ciao,
           Martin

          --
          Ich liebe Politiker auf Wahlplakaten.
          Sie sind tragbar, geräuschlos, und leicht wieder zu entfernen.
            (Loriot, deutscher Humorist, †2011)
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Hallo,

            Hinweis - wegen hinweisen. Ausweis - wegen ausweisen. weiß - einen Raum weißen. Lediglich die Farbe wird mit ß geschrieben.

            und die Singular-Präsens-Formen von "wissen".

            Rot ist auffälliger als weiß.

            Wer weiß ... ;-)

            Ciao,
            Martin

            Habs verstanden :) danke für Deutsch-Lehrstunde. Gelobe Besserung.