2011-01-06 3 views
1

Ich möchte eine Funktion entsprechend ihrer ID zu allen Eingabefeldern in einer Webseite zuweisen. Gehen Sie schrieb ich Code unten, aber alle Eingabefelder laufen keyPress mit demselben Parameter .. :(Ändern von Funktionsparametern für onkeypress Ereignis nach Quell-ID

///////////////////Checks all available 'text' 'input's//////////////////// 
var inputs = document.getElementsByTagName('input'); 
var cnvtrInput = new Array(); 
for (var index = 0; index < inputs.length; index++) { 
if (inputs[index].type == 'text') { 
    cnvtrInput[index] = new converter(inputs[index]); 
    inputs[index].onkeypress = function() {return keyPess(cnvtrInput[index])}; 
} 
} 
//index--; 

Mit der zuletzt kommentierten Aussage fand ich, dass die Weitergabe Element keyPress der letzte Wert des Index ist;

Schließlich habe ich versucht, mit textareas gleich aber nicht ...

Antwort

3

Sie Funktionen in einer Schleife zu schaffen, die immer schwierig ist. Nachdem die Schleife beendeten index den Wert haben inputs.length und Ihr Rückruf index verweisen. aber es wird auch nicht funktionieren, wenn yo Sie definieren eine neue Variable in einer Schleife, da JavaScript keinen Blockbereich, sondern nur Funktionsumfang hat.
Sie müssen den Wert in einem neuen Bereich erfassen, z. mit einer sofortigen Funktion:

inputs[index].onkeypress = (function(value) { 
    return function() {return keyPess(value)}; 
}(cnvtrInput[index])); 
+0

Vielen Dank .... Es ist großartig und funktioniert wirklich gut! – DarRay