Hans-Martin: Problem Variablenübergabe an Funktion

Hallo zusammen,

ich habe ein Problem mit der Übergabe einer Variablen an eine "Unterfunktion".

  
...  
var searchArray = new Array('abc','def');  
for(var b=0;b < searchArray.length;b++)  
{  
 thisObj.inputFields = jQuery('#new' + searchArray[b] + 's');  
 var field = String(searchArray[b]);  
 thisObj.inputFields.keyup(function(field)  
 {  
  var newVal = 0;  
  if(Number(document.getElementById('new' + field + 's').value) != 'NaN')  
  {  
   newVal = parseInt(document.getElementById('new' + field + 's').value);  
  }  
  thisObj.setNewVal(newVal,field,field.toLowerCase());  
 });  
}  
...  

Die entscheidende Stelle ist folgende:

  
...  
var field = String(searchArray[b]);  
 thisObj.inputFields.keyup(function(field)  
 {  
...  

Diese Übergabe scheint nicht zu funktionieren. Lasse ich mir die Variable "field" direkt nach der Deklaration ausgeben, ist diese auch noch korrekt gefüllt. Sobald ich allerdings in diesem Codeteil...

  
...  
 thisObj.inputFields.keyup(function(field)  
 {  
  document.write(field);  
...  

...die Variable per document.write() ausgeben lasse, schreibt er mir nur [Object] in das Browserfenster. Kann mir dort jemand weiterhelfen?
Bin für jeden Hinweis dankbar.

Viele Grüße
Hans-Martin

  1. Hallo,

    Die entscheidende Stelle ist folgende:

    var field = String(searchArray[b]);
    thisObj.inputFields.keyup(function(field)
    {
    ...

    
    > [...] Lasse ich mir die Variable "field" direkt nach der Deklaration ausgeben, ist diese auch noch korrekt gefüllt. Sobald ich allerdings in diesem Codeteil...  
    > ~~~javascript
      
    
    >  thisObj.inputFields.keyup(function(field)  
    >  {  
    >   document.write(field);  
    > ...  
    > 
    
    

    ...die Variable per document.write() ausgeben lasse, schreibt er mir nur [Object] in das Browserfenster.

    Du übergibst nicht die Variable field, die du lokal angelegt hast (beide heißen nur zufällig gleich).
    Übergeben wird vielmehr ein Event-Objekt, denn .keyup ist in standardkonformen Browsern eine Eventhandlerfunktion.

    Gruß, Don P

    1. Hallo,

      Übergeben wird vielmehr ein Event-Objekt, denn .keyup ist in standardkonformen Browsern eine Eventhandlerfunktion.

      Äh Blödsinn, wollte sagen:
      Übergeben wird vielmehr in standardkonformen Browsern ein Event-Objekt, denn .keyup eine Eventhandlerfunktion.

      Gruß, Don P

      1. Hallo Don,

        erst einmal vielen Dank für deine Antwort.
        Kann ich es denn irgendwie auf anderem Wege lösen, diese Variable "field" an diese Funktion zu übergeben?

        Viele Grüße
        Hans-Martin

        1. Hallo,

          habe eine Lösung dazu gefunden. Danke für die Hilfe.

            
          for(var b=0;b < searchArray.length;b++)  
          			{  
          				thisObj.inputFields = jQuery('#new' + searchArray[b] + 's');  
          				thisObj.tempString = String(searchArray[b]);  
          				thisObj.inputFields.keyup(function()  
          				{  
          					var newVal = 0;  
          					if(Number(document.getElementById('new' + thisObj.tempString + 's').value) != 'NaN')  
          					{  
          						newVal = parseInt(document.getElementById('new' + thisObj.tempString + 's').value);  
          					}  
          					thisObj.setNewVal(newVal,thisObj.tempString,thisObj.tempString.toLowerCase());  
          				});  
          			}