romero: Viele onclick's in einer schleife

hallöchen,

ich möchte gern mehrere onclick's in einer schleife erstellen,welche dann jeweils die dazugehörige id ansteuern und was ausführen. aber wie mache ich das?

hab schon was versucht, und denke, dass das der anfang ist:

				for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
				{  
					document.getElementById("msgs").innerHTML += infile_zusatz_tmp[i] + " / " + infile_zusatz_anzahl_tmp[i] + " ";  
  
					x = document.createElement( "input" );  
					x.type ="button";  
					x.value = "x";  
					x.id = i;  
					//x.onclick = new Function( "alert(" + i + ");" );  
  
  
					document.getElementById( "msgs" ).appendChild(x);  
					document.getElementById( "msgs" ).innerHTML += "<br>";  
  
					document.getElementById( i ).onclick = new Function( "alert(" + i + ");" );  
				
~~~}  
  
welche dieser sachen sind den korrekt bzw. machen das was ich möchte?  
  
ich will, erst einmal, dass bei jedem button-drücken (je nachdem wie lang dieses array ist) die entsprechende stelle ausgegeben wird. aber er tut entweder nix, also "i" ist undefiniert (was ich nicht verstehe,da es ja in der schleife ist) oder zum anderen nimmt er nur das letzte "i" und führt nur da was aus.  
  
welches ist also das richtige, damit die function ausgeführt wird:  
~~~javascript
  
document.getElementById( i ).onclick = new Function( "alert(" + i + ");" );

oder
x.onclick = new Function( "alert(" + i + ");" );

wenn beide richtig sind, was mache ich denn falsch?

lg romero

  1. [latex]Mae  govannen![/latex]

    ich will, erst einmal, dass bei jedem button-drücken (je nachdem wie lang dieses array ist) die entsprechende stelle ausgegeben wird. aber er tut entweder nix, also "i" ist undefiniert (was ich nicht verstehe,da es ja in der schleife ist) oder zum anderen nimmt er nur das letzte "i" und führt nur da was aus.

    Klar. Dazu musst du eine closure verwenden, um das jeweilige »i« zu konservieren. Mit onclick schleife und closure findest du da gewiß etwas im selfhtml-archiv.

    Besser ist es allerdings, nur genau _einen_ onclick-handler zu verwenden und diesen einem allen gewünschten Elementen gemeinsamen Vorfahren-Element zuzuweisen. Dort wird dann das angekickte Element ermittelt. siehe molily

    Cü,

    Kai

    --
    Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
    in Richtung "Mess up the Web".(suit)
    SelfHTML-Forum-Stylesheet
    1. Besser ist es allerdings, nur genau _einen_ onclick-handler zu verwenden und diesen einem allen gewünschten Elementen gemeinsamen Vorfahren-Element zuzuweisen. Dort wird dann das angekickte Element ermittelt. siehe molily

      Cü,

      Kai

      habs mir durchgelesen.jetzt bin ich noch verwirrter als vorher. denn weiß grad nicht wo ich nun was einbauen soll.

      das ist ja der script-auszug wo er aber nur das letzte "i" ausgibt beim drücken des letzten buttons. die anderen buttons machen dabei nix.

      				for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
      				{  
      					document.getElementById("msgs").innerHTML += infile_zusatz_tmp[i] + " / " + infile_zusatz_anzahl_tmp[i] + " ";  
        
      					x = document.createElement( "input" );  
      					x.type ="button";  
      					x.value = "x";  
      					x.id = i;  
      					//x.class = "STL_Meldungen_Button";  
        
      					document.getElementById( "msgs" ).appendChild(x);  
      					document.getElementById( "msgs" ).innerHTML += "<br>";  
        
      					document.getElementById( i ).onclick = new Function( "alert(" + i + ");" );  
      				}
      

      sorry das ich da nachfrage, aber kann mir da einer ne kurze hilfestellung geben, wo ich dieses "molily" einbinde?

      lg romero

      1. ich merk's grad selber, dass ich über diesen weg es nicht so zu stande kriege.

        deswegen ne kurze erklärung was ich machen will.

        aus einer auswahlliste soll eine art stückliste erstellt werden. je nachdem was man auswählt und wieviel man es anklickt, erscheint dann eine übersicht mit den ausgewählten stücken und deren anzahl. z.b. so:

        [ infile_zusatz_tmp / infile_zusatz_anzahl_tmp ]

        D258_72090_008 / 3
        D258_72090_020 / 5
        D258_72090_040 / 1
        D258_72090_120 / 6

        dazu soll es einen button geben, wo ich dann separat einzelne stücke wieder löschen kann

        --> [x] => button zum löschen
        D258_72090_008 / 3 [x]
        D258_72090_020 / 5 [x]
        D258_72090_040 / 1 [x]
        D258_72090_120 / 6 [x]

        je nach dem was ich anklicke und wie oft ich es tue, soll sich die anzahl verringern bis hin zum löschen des eintrages in diesem array.

        D258_72090_008 / 1 [x] => 2x angeklickt
        --> D258_72090_020 / 5 [x] =5x angeklickt und wird aus dem array gelöscht
        D258_72090_040 / 1 [x]
        D258_72090_120 / 6 [x]

        sollte man aber zwischendurch die anzahl wieder erhöhen,dann soll er es halt machen und die neue anzahl hinzufügen.

        und hier der script-auszug:

        		function init_Zusatzmatten()  
        		{  
        			var infile_zusatz_tmp = new Array();						//--> temp-Array für die Zusatzmatten nach dem Auswählen  
        			var infile_zusatz_anzahl_tmp = new Array();					//--> temp-Array für die Zusatzmatten-Anzahl nach dem Auswählen  
        			var infile_zusatz = new Array();						//--> Gesamt - Array für die infile_Zusatz  
        			var zaehler = 1;  
          
        			var ZusatzmatteAuswählen = function()  
        			{  
        				var z = 0;								//--> Zähler, wenn ungleich ist  
          
        				var Zusatz_HTZ = document.Auswahl.Zusatz.options[document.Auswahl.Zusatz.selectedIndex].text;  
        				var Zusatz_Variante = document.Auswahl.ZusatzVariante.options[document.Auswahl.ZusatzVariante.selectedIndex].text;  
          
        				var x = Zusatz_HTZ + "_" + Zusatz_Variante;  
          
        				document.getElementById("msgs").innerHTML = "";  
          
        				if( infile_zusatz_tmp.length != 0 )  
        				{  
        					for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
        					{  
        						if( x == infile_zusatz_tmp[i] )  
        						{  
        							infile_zusatz_anzahl_tmp[i]++;  
          
        						} else { z++; }  
        					}  
          
        					if( z == infile_zusatz_tmp.length )  
        					{  
        						infile_zusatz_tmp.push( Zusatz_HTZ + "_" + Zusatz_Variante );  
        						infile_zusatz_anzahl_tmp.push( zaehler );  
        					}  
          
        				} else {  
        						infile_zusatz_tmp.push( Zusatz_HTZ + "_" + Zusatz_Variante );  
        						infile_zusatz_anzahl_tmp.push( zaehler );  
        					}  
          
        				// ich denke, dass ab hier meine fragestellung hin muss  
        				for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
        				{  
        					document.getElementById("msgs").innerHTML += infile_zusatz_tmp[i] + " / " + infile_zusatz_anzahl_tmp[i] + " ";  
          
        					x = document.createElement( "input" );  
        					x.type ="button";  
        					x.name = "LöscheninfileZusatz";  
        					x.value = "x";  
        					x.id = i;  
          
        					document.getElementById( "msgs" ).appendChild(x);  
        					document.getElementById( "msgs" ).innerHTML += "<br>";  
          
        					document.getElementById( i ).onclick = new Function( "document.getElementById( 'msgs' ).innerHTML +=" + infile_zusatz_tmp[i] + ";" );  
        				}  
        			};  
          
        			document.getElementById( "ZusatzmatteAuswahl" ).onclick = ZusatzmatteAuswählen;  
        		};
        

        ich hoffe ihr könnt mir nun folgen was ich möchte.

        lg romero

        1. kann mir keiner da einer diesbezüglich n tipp geben wie ich anzufangen hab?

          vielen dank dafür

          lg romero

          1. kann mir denn keiner helfen? ich brauche einen tipp, wonach ich z.b. suchen soll im internet.

            oder anders gefragt:
            muss, dass was ich möchte, in der schleife passieren? oder wo muss es geschehen?

            bin ja schon soweit, dass ich die jeweilige "id" separat ansteuern kann.
            aber da springt er jedesmal aus dieser function raus,d.h. dass, wenn ich ein 2.mal den button klicke, da die neue eingabe nicht angezeigt wird.

            			var ZusatzmatteAuswählen = function()  
            			{  
            				var z = 0;								//--> Zähler, wenn ungleich ist  
              
            				var Zusatz_HTZ = document.Auswahl.Zusatz.options[document.Auswahl.Zusatz.selectedIndex].text;  
            				var Zusatz_Variante = document.Auswahl.ZusatzVariante.options[document.Auswahl.ZusatzVariante.selectedIndex].text;  
              
            				var x = Zusatz_HTZ + "_" + Zusatz_Variante;  
              
            				document.getElementById("msgs").innerHTML = "";  
              
            				if( infile_zusatz_tmp.length != 0 )  
            				{  
            					for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
            					{  
            						if( x == infile_zusatz_tmp[i] )  
            						{  
            							infile_zusatz_anzahl_tmp[i]++;  
              
            						} else { z++; }  
            					}  
              
            					if( z == infile_zusatz_tmp.length )  
            					{  
            						infile_zusatz_tmp.push( Zusatz_HTZ + "_" + Zusatz_Variante );  
            						infile_zusatz_anzahl_tmp.push( zaehler );  
            					}  
              
            				} else {  
            						infile_zusatz_tmp.push( Zusatz_HTZ + "_" + Zusatz_Variante );  
            						infile_zusatz_anzahl_tmp.push( zaehler );  
            					}  
              
            				for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
            				{  
            					document.getElementById( "msgs" ).innerHTML += infile_zusatz_tmp[i] + " / " + infile_zusatz_anzahl_tmp[i] + " ";  
              
            					xx = document.createElement( "input" );  
            					xx.type ="button";  
            					xx.name = "LöscheninfileZusatz";  
            					xx.value = "x";  
            					xx.id = i;  
              
            					document.getElementById( "msgs" ).appendChild(xx);  
            					document.getElementById( "msgs" ).innerHTML += "<br>";  
            				};  
              
            				for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
            				{  
            					document.getElementById( i ).onclick = new Function( "document.getElementById( \'msgs\' ).innerHTML += " + (infile_zusatz_anzahl_tmp[i]-1) );  
            				};  
            			};
            

            das ist, wie schon oft gezeigt, die function, wo es, meiner meinung nach, mein problem behandelt werden muss bzw wo meine fragestellung hinein sollte.

            aber komm an dieser stelle halt nicht weiter und hoffe sehr auf eure hilfe.

            was soll passieren:

            aus 2 auswahllisten, wähle ich mir meine entsprechenden teile aus.
            zu jeder 1. auswahl wird eine 2. auswahl generiert.

            Zusatzmatte(n) für den Bereich D080:

            Bitte wählen:
            [b]D258_70092[b]
            D258_70094
            D258_70095
            D258_70096

            Bitte wählen:
            002
            004
            006
            ...

            danach, nachdem ich die 2 teile ausgewählt habe, drücke ich einen button "auswählen". dabei wird die function ZusatzmatteAuswählen() (s.o.) aufgerufen. dort werden die 2 teile zu einer einheit zusammengefasst, die gleichen teile gezählt und ausgegeben. soweit funzt es einwandfrei.

            nun möchte ich gern, dass, wenn ich z.b. ein falsches teil gewählt habe (egal von welcher auswahlliste), es ja auch wieder löschen. aber dynamisch.d.h. dass in meinem großen "ausgabefenster" die einzelnen teile aufgeführt werden, dazu aber ein button sichtbar ist, wo ich einzelne teile bzw. die anzahl der teile wieder löschen kann.

            aber es soll auch wieder möglich sein, dass ich diese liste der selektierten und ausgewählten teile bzw. deren anzahl jederzeit erweiteren kann. sozusagen eine riesige schleife, wo alles das passiert, was ich grad beschrieb.

            liste der ausgewählten teile und deren anzahl:
            [x] => lösch-button

            D258_70095_006 / 5 [x]
            D258_70095_020 / 5 [x]
            D258_70095_042 / 1 [x]

            gelöschte teile:

            D258_70095_006 / 3 [x] -> 2x geklickt zum löschen
            D258_70095_020 / 1 [x] -> 4x geklickt zum löschen
            D258_70095_042 / 1 [x]

            eventuelle erweiterung der liste:

            D258_70095_006 / 8 [x] -> 5x ausgewählt
            D258_70095_020 / 3 [x] -> 2x ausgewählt
            D258_70095_042 / 1 [x] -> 1x geklickt zum löschen -> soll aus dem array komplett gelöscht werden

            bitte gebt mir da einen tipp wie ich wo anzufangen hab.sonst komm ich bei meinem script nicht weiter.

            vielen lieben dank.

            lg romero

            1. hab jetzt eine möglichkeit gefunden, wie ich deren anzahl, so wie ich es möchte, darstellen kann. leider funktioniert es nur über alert( irgendwas ).

              zur besserem darstellung, hier der dazugehörige script-auszug:

              		function LöschenInfileZusatz( infile_zusatz_tmp, infile_zusatz_anzahl_tmp )  
              		{  
              			for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
              			{  
              				document.getElementById( "msgs" ).innerHTML += infile_zusatz_tmp[i] + " / " + infile_zusatz_anzahl_tmp[i] + " ";  
                
              				xx = document.createElement( "input" );  
              				xx.type ="button";  
              				xx.name = "LöscheninfileZusatz";  
              				xx.value = "x";  
              				xx.id = i;  
                
              				document.getElementById( "msgs" ).appendChild(xx);  
              				document.getElementById( "msgs" ).innerHTML += "<br>";  
              			};  
                
              			var ZusatzListe = document.getElementById( "msgs" );  
              			var ZusatzListeItems = ZusatzListe.getElementsByTagName( 'input' );  
                
              			for(var i = 0; i < ZusatzListeItems.length; i++)  
              			{  
              				var ZusatzListeItem = ZusatzListeItems[i];  
              	  
              				ZusatzListeItem.onclick = function(i) {  
              							return function() {  
              										infile_zusatz_anzahl_tmp.splice( i, 1, (infile_zusatz_anzahl_tmp[i]-1) );  
              										alert( infile_zusatz_anzahl_tmp[i] );  
              									};  
              								}(i);  
              			};  
              		};
              

              diese function wird wie folgt aufgerufen:

              			var ZusatzmatteAuswählen = function()  
              			{  
              				var z = 0;								//--> Zähler, wenn ungleich ist  
                
              				var Zusatz_HTZ = document.Auswahl.Zusatz.options[document.Auswahl.Zusatz.selectedIndex].text;  
              				var Zusatz_Variante = document.Auswahl.ZusatzVariante.options[document.Auswahl.ZusatzVariante.selectedIndex].text;  
                
              				var x = Zusatz_HTZ + "_" + Zusatz_Variante;  
                
              				document.getElementById("msgs").innerHTML = "";  
                
              				if( infile_zusatz_tmp.length != 0 )  
              				{  
              					for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
              					{  
              						if( x == infile_zusatz_tmp[i] )  
              						{  
              							infile_zusatz_anzahl_tmp[i]++;  
                
              						} else { z++; };  
              					};  
                
              					if( z == infile_zusatz_tmp.length )  
              					{  
              						infile_zusatz_tmp.push( Zusatz_HTZ + "_" + Zusatz_Variante );  
              						infile_zusatz_anzahl_tmp.push( zaehler );  
              					};  
                
              				} else {  
              						infile_zusatz_tmp.push( Zusatz_HTZ + "_" + Zusatz_Variante );  
              						infile_zusatz_anzahl_tmp.push( zaehler );  
              					};  
                
              				LöschenInfileZusatz( infile_zusatz_tmp, infile_zusatz_anzahl_tmp ); //-> besagter aufruf  
              			};
              

              aber jetzt zu meiner frage:

              wie schaff ich es, das in der function LöschenInfileZusatz( infile_zusatz_tmp, infile_zusatz_anzahl_tmp ) { ... }; es gleich richtig dargestellt wird? denn als erstes ist ja da eine for-schleife, welche mir die 2 array's anzeigt. durch's button-drücken wird ja die anzahl der jeweiligen matte um 1 verringert, halt durch's alert(). aber wie kann ich es so darstellen wie in der besagten for-schleife?

              bei einem batch konnte man das mittels einem goto machen. gibts sowas bei javascript auch? bzw wie kann ich diese sache am sinnvollsten lösen.

              lg romero

              1. hab jetzt eine möglichkeit gefunden, wie ich deren anzahl, so wie ich es möchte, darstellen kann. leider funktioniert es nur über alert( irgendwas ).

                Weißte, ich hatte mich mit deinem Problem beschäftigt, dir auch eine Lösung angeboten, sogar mit Code. Jetzt kommst du wieder mit einem Skript, das  zusammengestückelt aussieht und jetzt sollen sich die Leute nochmal von vorne Gedanken machen über deinen recht umständlichen Weg. Das macht kein Spaß

                zur besserem darstellung, hier der dazugehörige script-auszug:

                Zum besseren Verständnis deines Problemes wäre mal eine Beispielseite sinnvoll, statt nur Code Auschnitte. Dann könnte man sehen, a.) was genau das Problem ist und b.) welcher Lösungsweg sinnvoller ist.

                Skript-Auszüge sind dafür zu wenig.

                Struppi.

                1. Weißte, ich hatte mich mit deinem Problem beschäftigt, dir auch eine Lösung angeboten, sogar mit Code. Jetzt kommst du wieder mit einem Skript, das  zusammengestückelt aussieht und jetzt sollen sich die Leute nochmal von vorne Gedanken machen über deinen recht umständlichen Weg. Das macht kein Spaß

                  dafür dank ich dir auch. es hat mir ja auch geholfen. aber ich kann ja immer nur stückweise fragen.will es ja auch selber machen bzw. verstehen,sonst kann ich zu einem hingehen und geld dafür geben und er macht es mir dann,so wie ich es will.

                  zur besserem darstellung, hier der dazugehörige script-auszug:

                  Zum besseren Verständnis deines Problemes wäre mal eine Beispielseite sinnvoll, statt nur Code Auschnitte. Dann könnte man sehen, a.) was genau das Problem ist und b.) welcher Lösungsweg sinnvoller ist.

                  Skript-Auszüge sind dafür zu wenig.

                  Struppi.

                  ich kann es nicht online stellen.da es sich um eine *.hta-datei handelt.sprich es soll ein script sein,welches über ein auswahlverfahren stücklisten erstellt.halt lokal auf dem rechner.

                  meine frage war halt der,wie ich z.b. ein break einsetzen kann bzw. ob es ein goto bei javascript gibt,damit ich aus der einen schleife wieder die 1. aufrufen kann. oder ob es dafür einen anderen weg gibt,bei diesem script für mein problem,es gleich darzustellen.

                  lg romero

                  1. ich kann es nicht online stellen.da es sich um eine *.hta-datei handelt.sprich es soll ein script sein,welches über ein auswahlverfahren stücklisten erstellt.halt lokal auf dem rechner.

                    Du sollst "es" auch nicht online stellen, sondern einen Testcase, der dein Problem für Aussenstehende deutlich und nachvollziehbar macht.

                    Struppi.

                    1. Du sollst "es" auch nicht online stellen, sondern einen Testcase, der dein Problem für Aussenstehende deutlich und nachvollziehbar macht.

                      Struppi.

                      wie stell ich so ein testcase an?

                      lg romero

                      1. wie stell ich so ein testcase an?

                        In dem du eine Seite baust, wo nur das von dir geschilderte Problem dargestellt und nachvollziehbar ist

                        Struppi.

                        1. wie stell ich so ein testcase an?

                          In dem du eine Seite baust, wo nur das von dir geschilderte Problem dargestellt und nachvollziehbar ist

                          Struppi.

                          aber wie kann ich es dann hochladen?wo kann ich sowas machen?

                          lg romero

  2. "i" ist undefiniert (was ich nicht verstehe,da es ja in der schleife ist)

    Die Schleife ist längst abgearbeitet, wenn onclick eintritt.

    x.onclick = function(){
     alert(this.id);
    }

    ergäbe den gewünschten Wert. Du hast über this vollen Zugriff auf das Element, dessen onclick-Event gefeuert hat, und brauchst daher nicht nochmals mühselig dessen ID herausfinden.

  3. ich möchte gern mehrere onclick's in einer schleife erstellen,welche dann jeweils die dazugehörige id ansteuern und was ausführen. aber wie mache ich das?

    Was heißt denn "id ansteuern"?

    hab schon was versucht, und denke, dass das der anfang ist:

    So wie ich das sehe denkst du um mehrere Ecken

    welches ist also das richtige, damit die function ausgeführt wird:

    document.getElementById( i ).onclick = new Function( "alert(" + i + ");" );

      
    oder  
    ~~~javascript
    document.getElementById( i ).onclick = function(e) {  
    alert(this);  
    };  
    
    

    Brauchst du immer noch die ID?

    Struppi.

  4. das wäre mal mein versuch über dieses "moliliy". hoffe habs soweit richtig. machen tut er jedenfalls nix :(

    			var ZusatzmatteAuswählen = function()  
    			{  
    				...  
    				for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
    				{  
    					document.getElementById("msgs").innerHTML += infile_zusatz_tmp[i] + " / " + infile_zusatz_anzahl_tmp[i] + " ";  
      
    					x = document.createElement( "input" );  
    					x.type ="button";  
    					x.name = "LöscheninfileZusatz";  
    					x.value = "x";  
    					x.id = i;  
      
    					document.getElementById( "msgs" ).appendChild(x);  
    					document.getElementById( "msgs" ).innerHTML += "<br>";  
      
    				}  
      
    				document.getElementsByName( "LöscheninfileZusatz" ).onclick = infileZusatzLöschen;  
      
    				function infileZusatzLöschen ( e ) {  
    					var e = e || window.event;  
    					var target = e.target || e.idElement;  
      
    					var elementName = target.nodeName,  
    						inputElement = false;  
      
    					if( elementName == "ID" )  
    					{  
    						inputElement = target.parentNode;  
    					}  
      
    					if( inputElement )  
    					{  
    						Zeige( inputElement );  
      
    						return false;  
    					}  
    				}  
      
    				function Zeige( inputElement )  
    				{  
    					var y = inputElement.id;  
      
    					document.getElementById("msgs").innerHTML += y;  
    				}  
    		};
    

    grundsätzlich soll er aber folgendes machen:

    eine auswahlliste wird erstellt (mit deren anzahl,je nachdem wie oft man eine selektierung anklickt) und dabei soll ein button bewirken, dass eine anzahl (also -1) abgezogen wird.

    also:

    [x] => der button
    D258_70095_006 / 3 [x] -> 2x anklicken
    D258_70095_022 / 5 [x] -> 5x anklicken
    D258_70095_044 / 1 [x]

    D258_70095_006 / 1 [x]
    --> D258_70095_022 / 5 -> soll komplett aus dem array gelöscht werden
    D258_70095_044 / 1 [x]

    das ist mein ziel des ganzen. deswegen dachte ich, ich müsste eine new function erstellen (in der for-schleife) und das er dann auf das jeweilige "id" "zugreift" bzw es "anwählt" und dann halt mind. 1 abzieht.

    lg romero

  5. hab mir da wieder selber was ausgedacht.

    hier erstmal ein script-auszug:

    		function init_Zusatzmatten()  
    		{ ...  
    			var ZusatzmatteAuswählen = function()  
    			{  
    				var z = 0;								//--> Zähler, wenn ungleich ist  
      
    				var Zusatz_HTZ = document.Auswahl.Zusatz.options[document.Auswahl.Zusatz.selectedIndex].text;  
    				var Zusatz_Variante = document.Auswahl.ZusatzVariante.options[document.Auswahl.ZusatzVariante.selectedIndex].text;  
      
    				var x = Zusatz_HTZ + "_" + Zusatz_Variante;  
      
    				document.getElementById("msgs").innerHTML = "";  
      
    				if( infile_zusatz_tmp.length != 0 )  
    				{  
    					for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
    					{  
    						if( x == infile_zusatz_tmp[i] )  
    						{  
    							infile_zusatz_anzahl_tmp[i]++;  
      
    						} else { z++; };  
    					};  
      
    					if( z == infile_zusatz_tmp.length )  
    					{  
    						infile_zusatz_tmp.push( Zusatz_HTZ + "_" + Zusatz_Variante );  
    						infile_zusatz_anzahl_tmp.push( zaehler );  
    					};  
      
    				} else {  
    						infile_zusatz_tmp.push( Zusatz_HTZ + "_" + Zusatz_Variante );  
    						infile_zusatz_anzahl_tmp.push( zaehler );  
    					};  
    				LöschenInfileZusatz( infile_zusatz_tmp, infile_zusatz_anzahl_tmp );  
    			};  
    		...};  
      
    		function LöschenInfileZusatz( infile_zusatz_tmp, infile_zusatz_anzahl_tmp )  
    		{  
    			for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
    			{  
    				document.getElementById( "msgs" ).innerHTML += infile_zusatz_tmp[i] + " / " + infile_zusatz_anzahl_tmp[i] + " ";  
      
    				xx = document.createElement( "input" );  
    				xx.type ="button";  
    				xx.name = "LöscheninfileZusatz";  
    				xx.value = "x";  
    				xx.id = i;  
      
    				document.getElementById( "msgs" ).appendChild(xx);  
    				document.getElementById( "msgs" ).innerHTML += "<br>";  
    			};  
      
    			for( var i = 0; i < infile_zusatz_tmp.length; i++ )  
    			{  
    				document.getElementById( i ).onclick = function() {  
    											//infile_zusatz_anzahl_tmp.splice( i, 1, 7 );  
      
    											document.getElementById( "msgs" ).innerHTML += "was ist i: " + i + "<br>";  
    										};  
    			};  
    		};
    

    nun ist aber das problem, dass er im letzten abschnitt in der letzten for-schleife zwar durch das "i" auf die richtige id zugreift, also halt 0, 1, 2, ... (je nachdem wieviele einträge da sind) aber in der darauffolgenden function ist i immer der letzte eintrag also bei einer length von 3 ist an dieser besagten stelle i=2. wie kann das sein?

    somit kann ich auch dieses splice nicht richtig anwenden.kann mir da einer helfen wie ich halt zu jeder passenden id bzw i den richtigen wert ändern kann?

    denn somit kann ich auch dieses splice nicht anwenden:

    infile_zusatz_anzahl_tmp.splice( i, 1, (infile_zusatz_anzahl_tmp[i]-1) );

    lg romero