Matthias: Dynamisch onclick-Event zuweisen

Hi,

ich will mittels folgender Schleife den Buttons auf meiner Seite onclick-Events zuweisen. Die Zuweisung funktioniert auch so weit.

  
for (var i=0; i < buttonCounter; i++) {  
	var x = document.getElementsByName("button")[i];  
	x.onclick = function() { addTr(insertAfterTr[i]); }		  
}

Das Problem ist, dass ich der Funktion addTr() eine Variable als Parameter übergeben will und dieses Funktioniert leider nicht.

Ich hoffe es kann mir hier einer helfen. Vielen Dank.

Matthias

  1. for (var i=0; i < buttonCounter; i++) {
    var x = document.getElementsByName("button")[i];
    x.onclick = function() { addTr(insertAfterTr[i]); }
    }

    
    >   
    > Das Problem ist, dass ich der Funktion addTr() eine Variable als Parameter übergeben will und dieses Funktioniert leider nicht.  
      
    Funktioniert nicht, ist in dem Fall falsch. Es funktioniert, aber nicht wie gewünscht, da i immer buttonCounter +1 ist. Du musst hier eine Hilfsfunktion einsetzen um das richtige i zu erhalten.  
      
    ~~~javascript
      
    var createHandler = function(i) {  
       return function() {  
           addTr(insertAfterTr[i]);  
       };  
    };  
    for (var i=0; i < buttonCounter; i++) {  
     	var x = document.getElementsByName("button")[i];  
     	x.onclick = createHandler(i);}		  
    }
    

    Struppi.

    1. Funktioniert nicht, ist in dem Fall falsch. Es funktioniert, aber nicht wie gewünscht, da i immer buttonCounter +1 ist. Du musst hier eine Hilfsfunktion einsetzen um das richtige i zu erhalten.

      var createHandler = function(i) {
         return function() {
             addTr(insertAfterTr[i]);
         };
      };
      for (var i=0; i < buttonCounter; i++) {
      var x = document.getElementsByName("button")[i];
      x.onclick = createHandler(i);}
      }

      
      >   
      > Struppi.  
        
      Funktioniert. Vielen Dank für die schnelle Hilfe.  
        
      Matthias